Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 413

 
first_may :
Ne demek istedikleri belli değil mi?
Şu anlama geliyordu: Kodu foruma doğru şekilde yerleştirin
 
Karputov Vladimir :
Şu anlama geliyordu: Kodu foruma doğru şekilde yerleştirin

Apaçık. Birinci ve ikinci mumlarda tenkan ve kinjun'un yerini kontrol ediyorum. Bir sinyal varsa, bir uyarı giriyorum. Ama keşke sadece bir kez olsaydı. Lütfen yardım et. İşte kod.

 
//+------------------------------------------------------------------+
//|                                                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 :

Apaçık. Birinci ve ikinci mumlarda tenkan ve kinjun'un yerini kontrol ediyorum. Bir sinyal varsa, bir uyarı giriyorum. Ama keşke sadece bir kez olsaydı. Lütfen yardım et. İşte kod.

Çubuk başına birden fazla uyarı:

 //+------------------------------------------------------------------+
//|                                                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 :

Çubuk başına birden fazla uyarı:

Çok teşekkürler!!!
 

Herkese merhaba!

Kaybeden bir işlemden sonra danışmanın 1 sinyali atlamasını nasıl sağlayabilirim? (çok iyi Z-stratejisi)

Kelimelerle açıklayın, kodun kendisi uygulayabilir.

 
Leanid Aladzyeu :

Herkese merhaba!

Kaybeden bir işlemden sonra danışmanın 1 sinyali atlamasını nasıl sağlayabilirim? (çok iyi Z-stratejisi)

Kelimelerle açıklayın, kodun kendisi uygulayabilir.

Kayıp durumunda, terminalin global değişkenine belirli bir değer verin ve ilk sinyalde sıfıra sıfırlayın. İşlem fonksiyonu bu değeri izler ve yeni bir işlem açıp açmamaya karar verir.

Yani, iş sırası şöyle bir şeydir:

a) karları takip etmek;

b) sinyallerin sayılması, kaybolması durumunda bayrağın indirilmesi, ticaret için henüz başka bir sinyal olmaması durumunda, kayıptan sonra ilk sinyal geldiğinde bayrağın sıfırlanması;

c) Bayrağa bakın ve ticarete mi yoksa beklemeye mi karar verin.

GPT kullanmak daha uygundur, terminal çökmeleri durumunda kaydedilirler, koddaki basit değişkenler herhangi bir hapşırmadan sıfırlanabilir ve danışman hatalarla çalışacaktır.

 
Vitalie Postolache :

Kayıp durumunda, terminalin global değişkenine belirli bir değer verin ve ilk sinyalde sıfıra sıfırlayın. İşlem fonksiyonu bu değeri izler ve yeni bir işlem açıp açmamaya karar verir.

Yani, iş sırası şöyle bir şeydir:

a) karları takip etmek;

b) sinyallerin sayılması, kaybolması durumunda bayrağın indirilmesi, ticaret için henüz başka bir sinyal olmaması durumunda, kayıptan sonra ilk sinyal geldiğinde bayrağın sıfırlanması;

c) Bayrağa bakın ve ticarete mi yoksa beklemeye mi karar verin.

GPT kullanmak daha uygundur, terminal çökmeleri durumunda kaydedilirler, koddaki basit değişkenler herhangi bir hapşırmadan sıfırlanabilir ve danışman hatalarla çalışacaktır.

Her şeyi anladım, biri hariç. Sinyal sayacı nasıl yapılır?
Böyle?:
if("Koşul"== doğru)
ben++;
 
Leanid Aladzyeu :
Her şeyi anladım, biri hariç. Sinyal sayacı nasıl yapılır?
Böyle?:
if("Koşul"== doğru)
ben++;
Örneğin: Statik değişkenler .
 

tükürmek

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

tür dönüştürme nedeniyle olası veri kaybı .mq4 1697 29

SL'de çift tip.