Ошибка в коде. HELP!!! - страница 2

 
Prival:
MakarFX:

Спасибо. Как раз ковыряюсь в "MACD Sample"

А MACD Sample открывает сделки ? Если нет, то разреши советнику торговать. Рожица должна улыбающаяся в правом верхнем углу появиться.

Ура! Заработало:)
 
MakarFX:
Prival:
MakarFX:

Спасибо. Как раз ковыряюсь в "MACD Sample"

А MACD Sample открывает сделки ? Если нет, то разреши советнику торговать. Рожица должна улыбающаяся в правом верхнем углу появиться.

Ура! Заработало:)

Удачи. Дальше будет труднее
 
Prival писал (а):
Удачи. Дальше будет труднее
Зато интереснее...
 
MakarFX:
if (total<1)
     {
      OrderSend(Symbol(), OP_BUYSTOP, LotsSize, Ask+Profit*Point, Ask, Ask+Profit*Point+Profit*Point, "", 0, 0, CLR_NONE);
       return(0);
     }
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Сравните и все встанет на место.
 
Figar0:
MakarFX:
if (total<1)
     {
      OrderSend(Symbol(), OP_BUYSTOP, LotsSize, Ask+Profit*Point, Ask, Ask+Profit*Point+Profit*Point, "", 0, 0, CLR_NONE);
       return(0);
     }


int OrderSend(string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)


Сравните и все встанет на место.





Отложенный ордер по рынку не ставится. Меняйте Ask на какое-то другое значение, обычно не ближе 10 пунктов от текущей цены
 
exolon:
Отложенный ордер по рынку не ставится. Меняйте Ask на какое-то другое значение, обычно не ближе 10 пунктов от текущей цены

У меня цена=АСК+ профит, а стоплосс на АСК, профит= АСК+(профит+профит).

Это отложный не по рынку.

 
Figar0:
MakarFX:
if (total<1)
     {
      OrderSend(Symbol(), OP_BUYSTOP, LotsSize, Ask+Profit*Point, Ask, Ask+Profit*Point+Profit*Point, "", 0, 0, CLR_NONE);
       return(0);
     }
int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Сравните и все встанет на место.


У Вас slippage равен Ask, а это не верно.
 
Talex:
У Вас slippage равен Ask, а это не верно.
Спасибо! Я уже исправил.
 

Снова проблема!!!

int start()
  {
  int Total=OrdersTotal(), ticket;
//----
    if (Total<1)
     {
      ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Ask+Profit*Point,Bid-Profit*Point,"",0,0,CLR_NONE);
       return(0);
      }   
//----
     if (Total==1)
     {
      OrderSelect(1,SELECT_BY_TICKET);
        if(OrderType()==OP_BUY)
         {
          if(OrderStopLoss()<Bid-Profit*Point)
           {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Profit*Point,OrderTakeProfit(),0,CLR_NONE);
            return(0);
           }
         }
    else
      OrderSelect(1,SELECT_BY_TICKET);
        if(OrderType()==OP_SELL)
         {
          if(OrderStopLoss()>Ask+Profit*Point)
           {
           OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Profit*Point,OrderTakeProfit(),0,CLR_NONE);
            return(0);
           }
         }
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+

В этом варианте советника, открывается ордер СЕЛ и СтопЛосс двигается за ценой, как ТрейлингСтоп. Я этого и хотел, но.

Когда текущий ордер закрывается и открывается новый, в нем эта фунция уже не работает.

Плизз!!! Объясните.

 
MakarFX:

Снова проблема!!!

int start()

     if (Total==1)
     {
      OrderSelect(1,SELECT_BY_TICKET);
        if(OrderType()==OP_BUY)
         {
          if(OrderStopLoss()<Bid-Profit*Point)
           {
           OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Profit*Point,OrderTakeProfit(),0,CLR_NONE);
            return(0);
           }
         }
    else
      OrderSelect(1,SELECT_BY_TICKET);
        if(OrderType()==OP_SELL)
         {
          if(OrderStopLoss()>Ask+Profit*Point)
           {
           OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Profit*Point,OrderTakeProfit(),0,CLR_NONE);
            return(0);
           }
         }
     }
     
//----
   return(0);
  }
//+------------------------------------------------------------------+

В этом варианте советника, открывается ордер СЕЛ и СтопЛосс двигается за ценой, как ТрейлингСтоп. Я этого и хотел, но.


Когда текущий ордер закрывается и открывается новый, в нем эта фунция уже не работает.


Плизз!!!  Объясните.


А Почему в 
OrderSelect(1,SELECT_BY_TICKET);

используется индекс 1, более правильно 0, если открывается один ордер. Если несколько, то надо делать цикл и проходить все.
Причина обращения: