MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1658

 
artem artem MACD 와 같은 영역으로 돌아오면 첫 번째 캔들에서 주문이 열립니다. 그리고 lojna 4번 확인되고 4번째 캔들에 주문이 오픈됩니다. 이해하기 쉽게 파일을 첨부했습니다.


SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다

노력하다

 #define MagicNumber   122122
extern string s1             = "Trading options" ;
extern double Lot            = 0.01 ;     // размер лота 0 - авт.расчет
extern double StopLoss       = 40 ;     // стоплосс
extern double TakeProfit     = 10 ;     // тейкпрофит
extern double TrailStop      = 21 ;     // уровень без убытка
extern int     Trailing       = 0 ;       // трейлинг стоп 1 вкл. 0 выкл.
extern int     Breakeven      = 0 ;       // перенос стоп лосса в без убыток
extern string s2             = "Day & Hour" ;
extern int     HrStart        = 0 ;       // время начала торговли
extern int     HrEnd          = 23 ;     // время окончания торговли
extern int     Monday         = 1 ;       // Понедельник 1 вкд. 0 выкл.
extern int     Tuesday        = 1 ;       // Вторник
extern int     Wednesday      = 1 ;       // Среда
extern int     Thursday       = 1 ;       // Четверг
extern int     Friday         = 1 ;       // Пятница
//+------------------------------------------------------------------+
// параметры индикаторов
double MovingPeriodLw        = 5 ;      
double MovingPeriodS1        = 75 ;
double MovingPeriodS2        = 85 ;
double StopLevel;
double TrailStep             = 3 ;       // шаг трейлинг стопа
bool OrderBuy = true , OrderSell = true , Order = false , Init = true ;
int timeprev = 0 , Slip = 3.0 , start, cnt;

//+------------------------------------------------------------------+
//| Init function                                                    |
//+------------------------------------------------------------------+
void OnInit ()
{
   if ( Digits == 3 || Digits == 5 ) { // Пересчет для 5-ти знаков                                                    
      TakeProfit *= 10 ;
      TrailStop *= 10 ;
      TrailStep *= 10 ;
      StopLoss *= 10 ;
      Slip *= 10 ;
   } 
   return ; 
}
//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
{
   StopLevel = MarketInfo( Symbol (), MODE_STOPLEVEL); 
   if (CheckForOpen()!=start)
     {start=CheckForOpen(); cnt= 0 ;}
   else
     {cnt+= 1 ;}
   // Определение направления пересечения мувингов
//   if (Init) InitMetod(); 
   
   // Трейлинг стоп открытых позиций
   if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber);
   
   // Ожидание нового бара на графике
   if (timeprev == Time[ 0 ]) return ;
   timeprev = Time[ 0 ];

   if (cnt== 3 )
     {
       // Открытие ордера по методу Пуриа
       if (CheckForOpen()== 0 && OrderBuy== true ) // Если сигнал для покупок 
        {
         if ( OrderSend ( Symbol (),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss* Point ,Ask+TakeProfit* Point , "" ,MagicNumber, 0 ,Blue))
           {OrderBuy= false ; Print ( "BUY OK" );}
        } 
       if (CheckForOpen()== 1 && OrderSell== true ) // Если сигнал для продаж 
        {
         if ( OrderSend ( Symbol (),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss* Point ,Bid-TakeProfit* Point , "" ,MagicNumber, 0 ,Red))
           {OrderSell= false ; Print ( "SELL OK" );}
        }
     }   
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen() // Открытие ордера по методу Пуриа
  {
   double malw,mas1,mas2,macd;
   int     res=- 1 , buy= 0 , sell= 0 ;
   // Считывание параметров индикаторов 3 свечи (4ой)
   malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 3 );
   mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 3 );
   mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 3 );
   macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 3 );
   if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;}
   if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;}
   // Считывание параметров индикаторов 2 свечи (3ей)
   malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 2 );
   mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 2 );
   mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 2 );
   macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 2 );
   if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;}
   if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;}
   // Считывание параметров индикаторов 1 свечи (2ой)
   malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 1 );
   mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 1 );
   mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 1 );
   macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 1 );
   if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;}
   if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;}
   // Считывание параметров индикаторов 0 свечи (1ой)
   malw= iMA ( NULL , 0 ,MovingPeriodLw, 0 , MODE_EMA , PRICE_CLOSE , 0 );
   mas1= iMA ( NULL , 0 ,MovingPeriodS1, 0 , MODE_LWMA , PRICE_LOW , 0 );
   mas2= iMA ( NULL , 0 ,MovingPeriodS2, 0 , MODE_LWMA , PRICE_LOW , 0 );
   macd= iMACD ( NULL , 0 , 15 , 26 , 1 , PRICE_CLOSE ,MODE_MAIN, 0 );
   if (malw>mas1&&malw>mas2&&macd> 0 ) {buy+= 1 ; sell= 0 ;}
   if (malw<mas1&&malw<mas2&&macd< 0 ) {buy= 0 ; sell+= 1 ;}
   
   if (buy < 4 )  OrderBuy= true ; 
   if (sell< 4 )  OrderSell= true ;
   if (buy == 4 ) { res= 0 ; OrderSell= true ;} 
   if (sell== 4 ) { res= 1 ; OrderBuy = true ;}
   return (res);
  }
 
MakaeFX, 이제 4번째 컨펌 캔들에서가 아니라 7번째 캔들에서 열리는 이유가 무엇인가요? 테스터의 스크린샷이 첨부되었습니다.
파일:
 
artem artem # :

SanAlex , MACD 막대와 빠른 막대가 느린 막대를 가로지르는 방법을 명확하게 볼 수 있도록 확대할 수 있습니까? 그리고 나는 거의 볼 수 없다

그러나 내가 거기에 추가한 것 - 전문가의 목적은 다릅니다. 목표는 열려 있는 모든 쌍에 대한 총 이익을 수집하고 모든 전문가를 닫는 것입니다.

스크린샷 2021-10-09 192219

스크린샷 2021-10-09 192331

파일:
 
artem artem # :
MakaeFX, 이제 4번째 컨펌 캔들에서가 아니라 7번째 캔들에서 열리는 이유가 무엇인가요? 테스터의 스크린샷이 첨부되었습니다.
Expert Advisor 파일을 게시하면 테스터에서 살펴보겠습니다.
 
SanAlex , 그래서 결론은 내가 구현하고자 하는 것이 훨씬 더 나아질 것이라는 것입니다. + 저는 며칠 동안 이 작업을 해왔고, 올바른 코드가 어떻게 생겼는지에 대해 이미 근본적으로 관심이 있습니다. 그리고 미래에는 매우 유용할 것이며 고문은 정말 좋을 것입니다. 하지만 당신의 버전은 좋은, 나는 반대 할 수 없습니다
 
MakarFX , 첨부 고문
파일:
 
artem artem # :
MakarFX , 첨부 고문
MetaEditor의 빌드는 무엇입니까?
 
정확히 MetaEditor - 버전 5.00 빌드 2382
 
artem artem # :
정확히 MetaEditor - 버전 5.00 빌드 2382

게시한 파일을 어떻게 컴파일했는지 명확하지 않습니다...

그것을 시도하고 필요한 것을 추가하십시오

파일:
artem.mq4  13 kb
 

MakarFX , 08/01/21부터 모든 틱에 대해 테스트하면 정상입니다. 09/03/21까지. - 그런 다음 46개 주문

그리고 만약 테스트가 같은 기간의 시가만을 기준으로 한다면 - 29 주문은?

+ 여러 주문이 틱으로 표시되는 경우 시작 가격이 아닌 분명히 열렸습니다. 보여주는 스크린샷을 첨부했습니다

파일: