초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 413

 
first_may :
그들이 의미하는 바가 명확하지 않습니까?
다음을 의미했습니다. 포럼에 코드를 올바르게 삽입하십시오.
 
Karputov Vladimir :
다음을 의미했습니다. 포럼에 코드를 올바르게 삽입하십시오.

알았습니다. 나는 첫 번째와 두 번째 양초에서 텐칸과 킨쥰의 위치를 확인한다. 신호가 있으면 경고를 입력합니다. 하지만 딱 한 번이었으면 좋겠어요. 도와주세요. 다음은 코드입니다.

 
//+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"



//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen=8;
int IKHkijunsen=24;
int IKHsenkouspanb=48;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[]; 
double ich2_buffer[]; 
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;



//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   SignalICH=TradeSignal_20();
   
   
   Comment("SignalICH: "+(string)SignalICH);
}



//+------------------------------------------------------------------+
//| Функция                                             |
//+------------------------------------------------------------------+
int TradeSignal_20()
{
   int sig=0;

   if(h_ich==INVALID_HANDLE)
   {
      h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
      return(0);
   }
   else
   {
      if (CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) return(0); // TENKANSEN_LINE
      if (CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) return(0); // KIJUNSEN_LINE
      if (!ArraySetAsSeries(ich1_buffer,true)) return(0);
      if (!ArraySetAsSeries(ich2_buffer,true)) return(0);
   }
   
   //--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[1]>ich2_buffer[1]) sig=1;
   else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;
   else sig=0;
   
   if (ich1_buffer[1]>ich2_buffer[1])
      if (ich1_buffer[2]<ich2_buffer[2])
         Alert(Symbol()+": покупка");
   
   if (ich1_buffer[1]<ich2_buffer[1])
      if (ich1_buffer[2]>ich2_buffer[2])
         Alert(Symbol()+": продажа");
   
   
   //--- возвращаем торговый сигнал
   return (sig);
}
 
first_may :

알았습니다. 나는 첫 번째와 두 번째 양초에서 텐칸과 킨쥰의 위치를 확인한다. 신호가 있으면 경고를 입력합니다. 하지만 딱 한 번이었으면 좋겠어요. 도와주세요. 다음은 코드입니다.

막대당 하나 이상의 경고:

 //+------------------------------------------------------------------+
//|                                                main_Ichimoku.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Объявим переменные для хранения настроек индикаторов             |
//+------------------------------------------------------------------+
int IKHtenkansen= 8 ;
int IKHkijunsen= 24 ;
int IKHsenkouspanb= 48 ;
//+------------------------------------------------------------------+
//| Объявим переменные для хранения хэндлов индикаторов              |
//+------------------------------------------------------------------+
int h_ich= INVALID_HANDLE ;
//+------------------------------------------------------------------+
//| Объявим необходимые массивы для хранения данных индикаторов      |
//+------------------------------------------------------------------+
double ich1_buffer[];
double ich2_buffer[];
//+------------------------------------------------------------------+
//| Объявим переменные для хранения сигналов индикаторов             |
//+------------------------------------------------------------------+
int SignalICH;
//+------------------------------------------------------------------+
//| Объявим переменную-флаг разрешения/запрета алерта                |
//+------------------------------------------------------------------+
bool bool_alert= false ;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   static datetime prevtime= 0 ;
   datetime time_zero[];
   CopyTime ( Symbol (), Period (), 0 , 1 ,time_zero);
   
   if (!bool_alert)
       if (prevtime!=time_zero[ 0 ])
         bool_alert= true ;
   prevtime=time_zero[ 0 ];
   
   SignalICH=TradeSignal_20();

   Comment ( "SignalICH: " +( string )SignalICH);
  }
//+------------------------------------------------------------------+
//| Функция                                                          |
//+------------------------------------------------------------------+
int TradeSignal_20()
  {
   int sig= 0 ;

   if (h_ich== INVALID_HANDLE )
     {
      h_ich= iIchimoku ( Symbol (), Period (),IKHtenkansen,IKHkijunsen,IKHsenkouspanb);
       return ( 0 );
     }
   else
     {
       if ( CopyBuffer (h_ich, 0 , 0 , 3 ,ich1_buffer)< 2 ) return ( 0 ); // TENKANSEN_LINE
       if ( CopyBuffer (h_ich, 1 , 0 , 3 ,ich2_buffer)< 2 ) return ( 0 ); // KIJUNSEN_LINE
       if (! ArraySetAsSeries (ich1_buffer, true )) return ( 0 );
       if (! ArraySetAsSeries (ich2_buffer, true )) return ( 0 );
     }

//--- проводим проверку условия и устанавливаем значение для sig
   if (ich1_buffer[ 1 ]>ich2_buffer[ 1 ]) sig= 1 ;
   else if (ich1_buffer[ 1 ]<ich2_buffer[ 1 ]) sig=- 1 ;
   else sig= 0 ;8

   if (ich1_buffer[ 1 ]>ich2_buffer[ 1 ])
       if (ich1_buffer[ 2 ]<ich2_buffer[ 2 ])
         if (bool_alert)
           {
             Alert ( Symbol ()+ ": покупка" );
             //--- опускаем флаг
            bool_alert= false ;
           }

   if (ich1_buffer[ 1 ]<ich2_buffer[ 1 ])
       if (ich1_buffer[ 2 ]>ich2_buffer[ 2 ])
         if (bool_alert)
           {
             Alert ( Symbol ()+ ": продажа" );
             //--- опускаем флаг
            bool_alert= false ;
           }

//--- возвращаем торговый сигнал
   return (sig);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir :

막대당 하나 이상의 경고:

매우 감사합니다!!!
 

안녕하세요!

거래 손실 후 어드바이저가 1 신호를 건너뛰게 하는 방법은 무엇입니까? (아주 좋은 Z 전략)

말로 설명하자면, 코드 자체가 구현할 수 있습니다.

 
Leanid Aladzyeu :

안녕하세요!

거래 손실 후 어드바이저가 1 신호를 건너뛰게 하는 방법은 무엇입니까? (아주 좋은 Z 전략)

말로 설명하자면 코드 자체가 구현할 수 있습니다.

손실의 경우 터미널 의 전역 변수에 특정 값을 부여하고 첫 번째 신호에서 0으로 재설정합니다. 거래 기능 은 이 값을 모니터링하고 새로운 거래를 열지 여부를 결정합니다.

즉, 작업 순서는 다음과 같습니다.

a) 이익 추적

b) 신호를 계산하고 손실이 발생한 경우 플래그를 고정하고 아직 다른 거래 신호가 없는 경우 손실 후 첫 번째 신호가 도착하면 플래그를 재설정합니다.

c) 깃발을 보고 거래할지 아니면 기다릴지 결정합니다.

GPT를 사용하는 것이 더 편리하고 터미널 충돌 시 저장되며 코드의 간단한 변수는 재채기에서 재설정할 수 있으며 고문은 오류와 함께 작동합니다.

 
Vitalie Postolache :

손실의 경우 터미널 의 전역 변수에 특정 값을 부여하고 첫 번째 신호에서 0으로 재설정합니다. 거래 기능 은 이 값을 모니터링하고 새로운 거래를 열지 여부를 결정합니다.

즉, 작업 순서는 다음과 같습니다.

a) 이익 추적

b) 신호를 계산하고 손실이 발생한 경우 플래그를 고정하고 아직 다른 거래 신호가 없는 경우 손실 후 첫 번째 신호가 도착하면 플래그를 재설정합니다.

c) 깃발을 보고 거래할지 아니면 기다릴지 결정합니다.

GPT를 사용하는 것이 더 편리하고 터미널 충돌 시 저장되며 코드의 간단한 변수는 재채기에서 재설정할 수 있으며 고문은 오류와 함께 작동합니다.

하나 빼고 다 이해했습니다. 신호 카운터를 만드는 방법?
그래서?:
if("조건"== 참)
나는 ++;
 
Leanid Aladzyeu :
하나 빼고 다 이해했습니다. 신호 카운터를 만드는 방법?
그래서?:
if("조건"== 참)
나는 ++;
예: 정적 변수 .
 

침을 뱉다

sl = NormalizeDouble (sl,MarketInfo(symbol,MODE_DIGITS));

유형 변환으로 인한 데이터 손실 가능성 .mq4 1697 29

SL의 더블 유형.


사유: