Çaydanlıktan gelen sorular - sayfa 51

 

Çok teşekkür ederim papaklas , ortaya çıktı, şimdi farkın ne olduğunu anlamaya çalışacağım.

 

Uzman neden bu kod parçasına takılıyor:

 if (Orders_Total!= 0 )
  {
   for (i=Orders_Total;i>= 0 ;i--)
     {
      Alert (Orders_Total);
      if ( Symbol ()== PositionGetSymbol (i))
        {
         OpenPrice= PositionGetDouble ( POSITION_PRICE_OPEN );
         OrderLot = PositionGetDouble ( POSITION_VOLUME );
         StopLoss = PositionGetDouble ( POSITION_SL );
         TakeProfit= PositionGetDouble ( POSITION_TP );
         if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_BUY )
           {
            for (i= 0 ;i< 12 ;i++)
              {
               if (Price[i].low<lowest)
                 {
                  lowest=Price[i].low;
                 }
              }
            Alert (lowest);
            SL= NormalizeDouble (lowest-spread- _Point , _Digits );
            if (StopLoss<SL)
              {
               request.action= TRADE_ACTION_SLTP ;
               request.symbol= _Symbol ;
               request.volume= OrderLot;
               request.sl=SL;
               request.tp=TakeProfit;
               request.type= ORDER_TYPE_BUY ;
               OrderSend (request,result);
              }
           }
         if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
           {
            for (i= 0 ;i< 12 ;i++)
              {
               if (Price[i].high>highest)
                 {
                  highest=Price[i].high;
                 }
              }
            Alert (highest);
            SL= NormalizeDouble (highest+spread+ _Point , _Digits );
            if (StopLoss>SL)
              {
               request.action= TRADE_ACTION_SLTP ;
               request.symbol= _Symbol ;
               request.volume= OrderLot;
               request.sl=SL;
               request.tp=TakeProfit;
               request.type= ORDER_TYPE_SELL ;
               OrderSend (request,result);
              }
           }
        }
     }
  }

Eklenen uyarılar Orders_Total=2 en düşük ve en yüksek de yeterli değerleri verir, ancak EA bu döngüde askıda kalır, sonsuz sayıda uyarı verir, başka hatalar (sipariş değişikliği ile ilgili) vermez.

Yeni başlayan birine yardım edin :)

 

Bir dış döngü ve iki iç döngü için, dış döngünün her yeni yinelemesinde 12'ye eşit olan aynı döngü değişkeni i

 
stringo :

Bir dış döngü ve iki iç döngü için, dış döngünün her yeni yinelemesinde 12'ye eşit olan aynı döngü değişkeni i

Teşekkürler!!!
 

Kodu düzeltebilir misin? Mevcut çubuğun açılış fiyatına ihtiyacınız var. şimdiden teşekkürler .

 double Open[], val4;
ArraySetAsSeries (Open, true );
CopyOpen (Symbol_, PERIOD_M15 , 1 , 0 ,Open);
val4 = (Open[ ArrayMinimum (Open, 0 , 1 )] );

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
abeiks :

Kodu düzeltebilir misin? Mevcut çubuğun açılış fiyatına ihtiyacınız var. şimdiden teşekkürler .

"Sembol_" - geçersiz parametre, altı çizili önde olmalıdır

Evet ve kopyalanan öğelerin sayısı 0'dır.

 

Selamlar! EA'ya iCustom aracılığıyla harici bir gösterge bağlarsam, giriş parametrelerini dinamik olarak değiştiremem . iMA ise, her şey yolundadır. Her şey sabit değerlerle çalışır. İki değiştirilebilir dize.

ma_handle = iCustom ( _Symbol , 0 , "Examples\\JJMA.ex5" ,MA, 4 );
   
ma_handle = iMA ( _Symbol , 0 , MA, 0 , MODE_EMA , PRICE_CLOSE ); 

Bu durumda durum buysa, harici olanlarda ne değiştirilemez, ardından kodu danışmana gömün?

Üzgünüm, işe yarıyor, sadece bir büyüklük sırası daha uzun.

 
Karlson :

Selamlar! EA'ya iCustom aracılığıyla harici bir gösterge bağlarsam, giriş parametrelerini dinamik olarak değiştiremem . iMA ise, her şey yolundadır. Her şey sabit değerlerle çalışır. İki değiştirilebilir dize.

Bu durumda durum buysa, harici olanlarda ne değiştirilemez, ardından kodu danışmana gömün?

Göstergenin "...giriş parametrelerini dinamik olarak değiştiremez"?

Gösterge girdilerini uzman girdileri olarak oynatın. Ve her yeni onay işaretinde kullanmaktansa, Uzman Danışmanın başlatılması sırasında tutamacı bir kez almak daha iyidir.

 
Yedelkin :

Göstergenin "...giriş parametrelerini dinamik olarak değiştiremez"?

Gösterge girdilerini uzman girdileri olarak oynatın. Ve her yeni onay işaretinde kullanmaktansa, Uzman Danışmanın başlatılması sırasında tutamacı bir kez almak daha iyidir.

EA çalışırken ortalama periyodum ATR'den değişiyor, bu yüzden ortalama tutamaç OnTick() içine yerleştirilir.Aslında, EA'nın giriş parametresi ATR periyodudur.Bu değişmez.

 int OnInit ()
  {
  atr_handle = iATR ( _Symbol , 0 , ATR);   //инициализируем хэндл ATR
  }

void OnTick ()
  {
     CopyBuffer (atr_handle, 0 , 0 , 5 ,atr);   //заполняем массив ATR
     ArraySetAsSeries (atr, true );

     MA=( int )(atr[ 1 ]*kMA);                 //рассчитываем период требуемый для средней от ATR

   //ma_handle = iCustom(_Symbol,0,"Examples\\JJMA.ex5",MA,4);  // получаем хэндл средней
   
     ma_handle = iMA ( _Symbol , 0 , MA, 0 , MODE_EMA , PRICE_CLOSE );

     CopyBuffer (ma_handle, 0 , 0 , 5 ,ma);     //заполняем массив средней
     ArraySetAsSeries (ma, true ); 
  }
 
Karlson :

EA çalışırken ortalama periyodum ATR'den değişiyor, bu yüzden ortalama tutamaç OnTick()'e yerleştirilir.Aslında EA'nın giriş parametresi ATR periyodudur.O değişmez.ATR OnInit()'de

Neredeyse anlaşıldı. Ama her seferinde yeni bir işarette gösterge tutamağını almak zordur... Peki önceki tutamacı nereye koyarsınız?