任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 448

 
Forexman77:
如何粗略地实施它?其他函数我很熟悉,但对订单和数组我还不太了解。

我猜想,是这样的

 // Учёт ордеров
   Symb=Symbol();                               // Название фин.инстр.
   Total=0;                                     // Количество ордеров
   int Ticket[5];
   ArrayInitialize(Ticket,0);
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         if (OrderSymbol()!=Symb)continue;      // Не наш фин. инструм
         if (OrderType()>1)                     // Попался отложенный
           {
            Alert("Обнаружен отложенный ордер. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Total++;                               // Счётчик рыночн. орд
         if (Total>5)                           // Было не более одного орд, стало не более пяти
           {
            Alert("Несколько рыночных ордеров. Эксперт не работает.");
            return;                             // Выход из start()
           }
         Ticket[Total-1]=OrderTicket();                  // Номер выбранн. орд.
         Tip   =OrderType();                    // Тип выбранного орд.
         Price =OrderOpenPrice();               // Цена выбранн. орд.
         SL    =OrderStopLoss();                // SL выбранного орд.
         TP    =OrderTakeProfit();              // TP выбранного орд.
         Lot   =OrderLots();                    // Количество лотов
        }
     }
   // Открытие ордеров
   while(true)                                  // Цикл закрытия орд.
     {
      if (Total < 5 && Opn_B==true)     // Открытых орд. нет +. Было Total < 1, стало Total < 5
        {                                       // критерий откр. Buy
         RefreshRates();                        // Обновление данных
         SL=Bid - New_Stop(StopLoss)*Point;     // Вычисление SL откр.
         TP=Bid + New_Stop(TakeProfit)*Point;   // Вычисление TP откр.
         Alert("Попытка открыть Buy. Ожидание ответа..");
         Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
         if (Ticket > 0)                        // Получилось :)
           {
            Alert ("Открыт ордер Buy ",Ticket);
            return;                             // Выход из start()
           }
         if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            continue;                           // Повторная попытка
         return;                                // Выход из start()
        }
   // Закрытие ордеров
      if (Tip==0 && Cls_B==true)                // Открыт ордер Buy и есть критерий закр
        {
          for(i=0;i<5;i++)                             
          {
            if (Ticket[i]==0) continue;           

            Alert("Попытка закрыть Buy ",Ticket[i],". Ожидание ответа..");
            RefreshRates();                        // Обновление данных
         
            Ans=OrderClose(Ticket[i],Lot,Bid,2);      // Закрытие Buy

            if (Ans==true)                         // Получилось :)
            {
               Alert ("Закрыт ордер Buy ",Ticket[i]);
            }

            if (Fun_Error(GetLastError())==1)      // Обработка ошибок
            {
               i--;
               continue;                           // Повторная попытка
            }

         }
 
Vitek2010:
不,它没有。我会解释--你的论坛就像一个希望,最后一个有能力的据点的程序。和插入尺寸--这就是写作 PERIOD_W1的看法,但无论是使用尺寸还是使用日期形式的固定基准,都没有得到任何理想的效果。我发了一个关于星期五的具体问题--顺便说一下,你的代码不能编译,因为它说的是'版本'--未知属性,所以如果你不知道如何把 DayOfWeek和5(星期五的数字)放入代码中,其他选项也没有帮助


所以你说错话了。

附加的文件:
vitek2010.mq4  2 kb
 

大家下午好。我正在发布一个指标,不幸的是,它挂起了,没有及时画出箭头,只是在你刷新图表时才画出箭头...切换到不同的TFs。

如果有人能让指标在每个蜡烛结束时自行更新......,好比说在蜡烛收盘前5-10秒?或者,也许有其他方法来解决这个问题?

提前感谢。

附加的文件:
 
Vinin:


所以你说错话了。


我把在指标 - 它显示 - 是不清楚的。我的变体有条件的延续或改变在以前的运动.即低于或高于零线.和你有一切以上,并在所有的星期,这不是那么简单的.你不应该偏离的基础(我)变体和简化的东西.你需要做的基础上,我的指标.真诚的。
 
alsu:

我猜是这样的。


放线
int Ticket[5];
ArrayInitialize(Ticket,0);

而不是int Ticket;错误就出来了。

'=' - 左侧方括号,预计为数组('=' - 左侧方括号,预计为数组)

'>' - 左方小括号,预计为数组 ('=' - 左方括号,预计为数组)

'>' - 意外的令牌('>' - 意外的令牌)

')'- 预期分配('' - 预期分配)

'continue' - 'break' 或 'continue' 仅在某些循环内使用 )

以及更多。

 

为什么顾问会开出无穷无尽的订单,请帮助我解决这个问题。

谢谢

外来的双倍数tp = 100。
外置双数l = 0.1。




int start()
{
// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
否则
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
如果(OrderMagicNumber() ==2 >0){return;}。
否则
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
返回。
}

 
addict:

为什么顾问会开出无穷无尽的订单,请帮助我解决这个问题。

谢谢

外来的双倍数tp = 100。
外置双数l = 0.1。




int start()

添加 if(OrdersTotal()==0)




// 1.3600
if(OrderMagicNumber() ==1 >0){return;}
否则
{
OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);
}
如果(OrderMagicNumber() ==2 >0){return;}。
否则
{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}
返回。
}

 
denis77515:

添加 if(OrdersTotal()==0)

买入的订单由一个人打开,而卖出的订单 - 同样,有无限多的订单
 

下午好。

我不明白这是怎么做到的

03:00:24 '9473965': 卖出0.01英镑兑美元的订单在0.00000处开盘,Sl: 1.65314 Tp: 0.00000失败 [无效的S/L或T/P]

用这个代码

RefreshRates();
tick=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),30,ssll,0,CMM,MAGIC,0,Blue);
     
为什么开盘价 为零
 

下午好。

你能帮助创建这样一个功能吗?

从最后已知的服务器时间 (TimeCurrent())到某一天的第一根柱子(TimeDay(Time[80]))当前图表有多少根柱子

提前感谢您!

原因: