Подскажите пожалуйста. Советник открывает ордера при каждом тике, как это можно устранить?

 

 Нужно чтоб открыл один раз, а не на каждом тике

Провозился так и не понял 

 

 

 

//+------------------------------------------------------------------+
//|                                                  My_First_EA.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh> 

input int      K=2;     
input int      D=2;      
input int      s=2;   
input double   Lot=0.01;   
      
int Handle; 
double M[],S[]; 
CTrade trade; 


int OnInit()

{ trade.SetAsyncMode(true);
  int deviation=10;
  trade.SetDeviationInPoints(deviation);
  Handle=iStochastic(NULL,PERIOD_CURRENT,K,D,s,MODE_SMA,STO_LOWHIGH);
  return(0); }
  
  
void OnDeinit(const int reason)
  {   IndicatorRelease(Handle); }
  
  
void OnTick()
  { if(CopyBuffer(Handle,0,0,3,M)<0)
     { Alert("Ошибка копирования буферов индикатора ADX - номер ошибки:",GetLastError(),"!!");
      return; }
   if(CopyBuffer(Handle,1,0,3,S)<0)
     { Alert("Ошибка копирования буферов индикатора Moving Average - номер ошибки:",GetLastError());
      return; }



bool Buy =(M[0]<S[0] && M[1]>=S[1]); 
  
   if(Buy)
       {if(!trade.PositionClose(_Symbol))                         
           if(!trade.Buy(Lot));} 
  
  
bool Sell = (M[0]>S[0] && M[1]<=S[1]);  
  
   if(Sell)
        {if(!trade.PositionClose(_Symbol))
            if(!trade.Sell(Lot));}
   
  }

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 

Код нужно оформлять так:

//+------------------------------------------------------------------+
//|                                                  My_First_EA.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#include <Trade\Trade.mqh> 

input int      K=2;     
input int      D=2;      
input int      s=2;   
input double   Lot=0.01;   
      
int Handle; 
double M[],S[]; 
CTrade trade; 


int OnInit()

{ trade.SetAsyncMode(true);
  int deviation=10;
  trade.SetDeviationInPoints(deviation);
  Handle=iStochastic(NULL,PERIOD_CURRENT,K,D,s,MODE_SMA,STO_LOWHIGH);
  return(0); }
  
  
void OnDeinit(const int reason)
  {   IndicatorRelease(Handle); }
  
  
void OnTick()
  { if(CopyBuffer(Handle,0,0,3,M)<0)
     { Alert("Ошибка копирования буферов индикатора ADX - номер ошибки:",GetLastError(),"!!");
      return; }
   if(CopyBuffer(Handle,1,0,3,S)<0)
     { Alert("Ошибка копирования буферов индикатора Moving Average - номер ошибки:",GetLastError());
      return; }



bool Buy =(M[0]<S[0] && M[1]>=S[1]); 
  
   if(Buy)
       {if(!trade.PositionClose(_Symbol))                         
           if(!trade.Buy(Lot));} 
  
  
bool Sell = (M[0]>S[0] && M[1]<=S[1]);  
  
   if(Sell)
        {if(!trade.PositionClose(_Symbol))
            if(!trade.Sell(Lot));}
   
  }

 Используя кнопочку SRC

 

Не понял)))

что это за кнопка SRC?

как использовать?

 

Ой понял что имели в виду)

вы можете подсказать ответ на данную проблему? 

 

Попробьте

if(PositionSelect(_Symbol)) return;

перед

bool Buy = ...