СТРАТЕГИЯ ИШИМОКУ - страница 3

 

Хорошо, теперь это работает в тесте стратегии, однако, размещается более одной сделки - несколько каждую минуту. Какую часть кода следует изменить?

И я понимаю, что вы, ребята, должно быть, уже очень раздражены, но если вы не спрашиваете, то и не получаете.

//+------------------------------------------------------------------+
//|                                              ICHIMOKU_SIMPLE.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double Lots = 1.0; 
//----
int start()
   {
   double tenkan_sen=iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, 1);
   double kijun_sen=iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1);
   int ticket;
//----

// check for long position (BUY) possibility
      if(tenkan_sen>kijun_sen)
         {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+Point,"ichimoku",16384,0,Green);
         if(ticket>0)
            {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
            }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
         
         }   //  added by RaptorUK
            
   // SELL 
     {
      OrderSelect(SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL && // check for opened position 
         OrderSymbol()==Symbol()) // check for symbol
         {
         if(OrderType()==OP_BUY) // long position is opened
            {
            // should it be closed?
            if(tenkan_sen<kijun_sen)   //  removed surplus (  RaptorUK
               {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
               return(0); // exit
               }
            }
         }
      }
  return(0);
   }
 
ToBa:

Хорошо, теперь это работает в тесте стратегии, однако, размещается более одной сделки - несколько каждую минуту. Какую часть кода следует изменить?

И я понимаю, что вы, ребята, должно быть, уже очень раздражены, но если вы не спрашиваете, то и не получаете.

Раздражены? Нет, не я... просто пытаюсь помочь вам учиться, и вы, кажется, делаете это... теперь вам нужно продолжать учиться.
 

Оки-доки, я знаю, что это связано с этой линией.

Но я не знаю, что означают цифры. Я пытался удалить некоторые части, но получаю ')' - неверный подсчет параметров C:\Program Files (x86)\MetaTrader 4\experts\ICHIMOKU_F1.mq4 (21, 51)

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+Point,"ichimoku",16384,0,Green);
 
Прочитайте документацию... нажмите здесь --> OrderSend
 
ToBa:

Хорошо, теперь это работает в тесте стратегии, однако, размещается более одной сделки - несколько каждую минуту.

Сначала вам нужно понять, что вы хотите, чтобы он делал вместо того, чтобы размещать несколько ордеров каждую минуту....
 

Хорошо, я достиг значительного прогресса. Однако t/p выполняется, как только цена пары увеличивается на 0.0001.

Теперь код выглядит следующим образом:

//+------------------------------------------------------------------+
//|                                              ICHIMOKU_SIMPLE.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double Lots = 1.0;
//----

int start()
   {
   double tenkan_sen=iIchimoku(NULL, 0, 9, 26, 52, MODE_TENKANSEN, 1);
   double kijun_sen=iIchimoku(NULL, 0, 9, 26, 52, MODE_KIJUNSEN, 1);
   int ticket,total,order_id;
   
// BUY
      total=OrdersTotal();
   if(total<1 && tenkan_sen>kijun_sen)
         {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+Point,"ichimoku",16384,0,Green);
         } 
                      
// SELL 
   if(tenkan_sen<kijun_sen)   
         {
         OrderClose(order_id,1,Ask,3,Red);
         return(0);
         }     
  return(0);
   }
 
т/п, похоже, размещается автоматически; я не знаю, какую часть нужно изменить
 
ToBa:
т/п, похоже, размещается автоматически; я не знаю, какую часть нужно изменить
Это часть OrderSend...
 
Теперь я знаю, что это - Ask+*Point, но вместо того, чтобы ставить число, я хочу, чтобы t/p был, когда tenkan-sen<kijun-sen.
 
Установите его на 0, тогда вам нужно будет постоянно проверять, когда tenkan-sen<kijun-sen, а затем, когда это произойдет, закрыть ордер. ... Обратная сторона этого заключается в том, что если у вас есть открытый ордер и вы потеряете связь с Интернетом, ваша сделка останется открытой, и выигрышная сделка может превратиться в проигрышную.
Причина обращения: