MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1525

 
Artyom Trishkin :

Üçüncü taraf bir kaynağın ve özel kanalların reklamı. Ben olmasaydım, yasaklayabilirdim.

ne reklamı??? Sorulanlar hakkında video eğitimi.

 
Andrey Sokolov :

ne reklamı??? Sorulanlar hakkında video eğitimi.

Düğme aracılığıyla video eğitimleri
 
Neyi yanlış yapıyorum?
 int OnInit ()
  {
//--- indicator buffers mapping
     SetIndexBuffer ( 0 ,Buy);
   SetIndexBuffer ( 1 ,Sell);  
   // Устанавливаем нулевые значения для индикатора, при которых не будет сигнальных стрелок
   SetIndexEmptyValue ( 0 , 0 );
   SetIndexEmptyValue ( 1 , 0 );
   //Определяем стиль отображения индикаторных линий - стрелка
   SetIndexStyle ( 0 , DRAW_ARROW );
   SetIndexStyle ( 1 , DRAW_ARROW ); 
   // Установим значки "стрелки" для буферов
   SetIndexArrow( 0 , 234 );   //Стрелка "вниз" для продаж
   SetIndexArrow( 1 , 233 );   //Стрелка "вверх" для покупок
   //Устанавливаем текст описания стрелок индикатора для отображения информации в всплывающей подсказке.
   SetIndexLabel( 0 , "Продаём" );
   SetIndexLabel( 1 , "Покупаем" );
   //Определяем разрядность значений индикаторных линий - приравниваем разрядности фин. инструмента
   IndicatorDigits ( Digits );
   //Строка с кратким названием индикатора выводится в сплывающей подсказке при наведении указателя мыши на стрелку
   IndicatorShortName ( "Мой первый индикатор" );
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
     int limit=rates_total-prev_calculated- 5 ;
   if (limit< 1 ) return ( 0 );
   for ( int i=limit;i>= 0 ;i--)
     {
       // Снимем показания индикатора
     double in1b = iCustom ( NULL , 0 , "in1" , 1 , 0 ); // индикатор 1 стрелка вверх
     double in1s = iCustom ( NULL , 0 , "in1" , 0 , 0 ); // индикатор 1 стрелка вниз
     
     double in2b = iCustom ( NULL , 0 , "in2" , 0 , 0 ); // индикатор 2 стрелка вверх
     double in2s = iCustom ( NULL , 0 , "in2" , 1 , 0 ); // индикатор 2 стрелка вниз
     
     if (in1b /* && in2b*/ )
           Buy[i]=high[i];
     if (in1s /* && in2s*/ )
            
             Sell[i]=low[i];
   
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
 
jarikn :
Neyi yanlış yapıyorum?
 if (in1b)

ne??? büyüktür, küçüktür veya eşittir... "in1b"yi neyle karşılaştırıyorsunuz?

 

Herkese iyi günler. Risk tutarında hesaplanan kâra ek olarak danışmana puan olarak sabitlenmiş bir kâr eklemeye çalışıyorum. Risk miktarındaki kâr iyi çalışıyor. Ancak noktalarda gerçekçi olmayan bir O_o değeri belirler. öyle yaparım. Risk tutarı veya puan olarak kârın ne olacağı konusunda bir transfer var.

   enum enumTP //ПЕРЕЧИСЛЕНИЕ ДЛЯ ТЕЙК ПРОФИТА
  {
   en_fiks_tp = 1 , // ФИКСИРОВАННЫЙ В ПУНКТАХ
   en_v_r = 0 ,   // В КОЛИЧЕСТВЕ Р
  };


Karın büyüklüğünü puan olarak belirlediğim bir değişken var.

 extern int Razmer_tp = 1500 ; // ТЕЙК ПРОФИТ В ПУНКТАХ

Sonra, kenesinde, karı hesaplamak ve doğruluğunu kontrol etmek için böyle bir şey yazıyorum.

 //+--НАЧАЛО РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+

if (sl > 0 && Tip_tp == en_v_r) // ЕСЛИ ПРОФИТ В КОЛИЧЕСТВЕ Р
//{// НАЧАЛО ПРОВЕРКИ НА НОЛЬ
  tp=sl*tp_v_R; // ВЫЧИСЛЯЕМ ПРОФИТ УМНОЖАЯ СТОП ЛОС НА КОЛИЧЕСТВО РИСКА
   //-НАЧАЛО РАСЧЁТА ПРОФИТА В ПУНКТАХ---------------------------------------------------------------------------------------------+
  
   if (Tip_tp == en_fiks_tp)
  { //--НАЧАЛО ЕСЛИ ПРОФИТ В ПУНКТАХ---------------------------------------------------------------------------------------------+
  tp = Razmer_tp;   // ПРОФИТУ ПРИСВАЕВАЕМ КОЛИЧЕСТВО ПУНКТ
  
  } //---КОЕНЦ ЕСЛИ ПРОФИТ В ПУНКТАХ---------------------------------------------------------------------------------------------+
  tp= NormalizeDouble (tp, Digits ()); // НОРМАЛИЗУЕМ ПРОФИТ, ЧТОБЫ РАБОТАЛО НА ЛЮБЫХ КАТИРОВКАХ
  
   // ПРОВЕРКА ТЕЙК ПРОФИТА НА СТОП ЛЕВЕЛ ОТ МАКАРА--
   if (tp<stoplevel)                                                           // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО
  {
         tp= NormalizeDouble (stoplevel* 1.5 , Digits ); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
  }
   //} // КОНЕЦ ПРОВЕРКИ НА НОЛЬ 
  
   //+--КОНЕЦ РАСЧЁТА ПРОФИТА---------------------------------------------------------------------- Разделитель ---+


Risk miktarında bir kâr için her şey yolunda gider, ancak puan olarak sabit bir kârla olmaz. Lütfen bana neyi yanlış yazdığımı ve puan olarak kâr belirlemenin doğru çalışması için nelerin düzeltilmesi gerektiğini söyleyin?

 
DanilaMactep :

Herkese iyi günler. Risk tutarında hesaplanan kâra ek olarak danışmana puan olarak sabitlenmiş bir kâr eklemeye çalışıyorum. Risk miktarındaki kâr iyi çalışıyor. Ancak noktalarda gerçekçi olmayan bir O_o değeri belirler. öyle yaparım. Risk tutarı veya puan olarak kârın ne olacağı konusunda bir transfer var.


Karın büyüklüğünü puan olarak belirlediğim bir değişken var.

Sonra, kene, kârı hesaplamak ve doğruluğunu kontrol etmek için böyle bir şey yazıyorum.


Risk miktarında bir kâr için her şey yolunda gider, ancak puan olarak sabit bir kârla olmaz. Lütfen bana neyi yanlış yazdığımı ve puan olarak kâr belirlemenin doğru çalışması için nelerin düzeltilmesi gerektiğini söyleyin?

" Puan " ile çarpma başına puan olarak kar

 
jarikn :
Neyi yanlış yapıyorum?

Peki sen ne ile meşgulsün?

 
MakarFX :

ne??? büyüktür, küçüktür veya eşittir... "in1b"yi neyle karşılaştırıyorsunuz?

Yazdığınız ekran görüntülerini eklemek için bir düğmem yok, bunun gibi bir ekran görüntüsü ekleyeceğim.

biraz tweaked ama hala hiçbir şey çalışmıyor

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
     int limit=rates_total-prev_calculated-
1 ;
   if (limit< 1 ) return ( 0 );
   for ( int i=limit;i>= 0 ;i--)
     {
     
       // Снимем показания индикатора
     double in1b = iCustom ( NULL , 0 , "in1" , 1 , 1 ); // индикатор 1 стрелка вверх
     double in1s = iCustom ( NULL , 0 , "in1" , 0 , 1 ); // индикатор 1 стрелка вниз
     
     double in2b = iCustom ( NULL , 0 , "in2" , 0 , 0 ); // индикатор 2 стрелка вверх
     double in2s = iCustom ( NULL , 0 , "in2" , 1 , 0 ); // индикатор 2 стрелка вниз
       Comment ( "in1b = " +in1b+ "\n" "in1s = " +in1s);
     if (in1b< 999999 && in1s> 999999 )
           Sell[i]=low[i];
     if (in1s< 999999 && in1b> 999999 )
            Buy[i]=high[i];
             
   
     }
     
//--- return value of prev_calculated for next call
   return (rates_total);
  }
Dosyalar:
 
jarikn :

Yazdığınız ekran görüntülerini eklemek için bir düğmem yok, bunun gibi bir ekran görüntüsü ekleyeceğim.

Biraz ekledim ama hala hiçbir şey çalışmıyor)

Göstergenizi temiz bir grafik üzerinde çalıştırın, veri penceresini açın ve ekran görüntüsünü alın
 
Genel olarak, örneğin 2 gösterge var. Ok ve nokta aynı mum üzerinde göründüğünde gereklidir, o zaman sinyal satın almaktır ve bunun tersi de geçerlidir.
Dosyalar:
in1.ex4  11 kb
in2.ex4  3 kb