Her döviz çifti için EA - döviz çifti başına yalnızca bir kez hangi kod açılacak? - sayfa 4

 
onewithzachy :
Çok yanlışsın. Kodunuz asla yürütülmez !!!. RaptorUK'ları kullanın.

Peki :)

Sadece bununla kafam karıştı:

"j = 0 olduğunda bitir"

Teşekkürler!

 
grey.unit :

Yani şöyle görünmelidir:

çünkü şunu yazdın:

yoksa yanılıyor muyum?

Hatalısınız . . . şuna bir bakın: için

Benim kod ifademde 2, j >= 0 anlamıdır. . . while ( j >= 0 ) bu nedenle döngü j 0 veya daha büyükken yürütülür, yani OrdersTotal() - 1'den 0'a kadar ve dahil

j = 0 kullanırsanız (belki de j == 0 yazılması gerekirdi) bu, while (j == 0) anlamına gelir ve döngü yalnızca j 0 olduğunda yürütülür

 
Aa tamam şimdi anladım
 
RaptorUK :

Hayır, bunu yap. . .

İlk sipariş pozisyonu 0'dır, yani 5 emriniz varsa, pozisyonlar 0, 1, 2, 3, 4'tür. . . yani sonuncusu OrdersTotal() - 1 . . . geri sayım yapmak için OrdersTotal()-1 ile başlayıp 0 ile bitirin

Bu, OrdersTotal () -1'in Sipariş Yok, ardından 0'ın 1. sıra, 1'in 2 sipariş ve bu şekilde devam eden 4'ün 5 siparişe eşit olduğu anlamına mı geliyor?

Birisi, -1'in Emir yok'a eşit olduğunu anlamamın doğru olup olmadığını bana bildirir mi?

teşekkürler

 
barnacle7 :

Bu, OrdersTotal () -1'in Sipariş Yok, ardından 0'ın 1. sıra, 1'in 2 sipariş ve bu şekilde devam eden 4'ün 5 siparişe eşit olduğu anlamına mı geliyor?

OrdersTotal() açık siparişlerin sayısıdır. Evet, toplamda 5'iniz varsa, 0'dan 4'e kadar numaralandırılırlar.
 

Aynı konu hakkında benim de yardıma ihtiyacım var. Acemi bir kodlayıcıyım ve burada gördüğüm kodu girmeye çalışıyorum ama hiç çalışmıyor bana yardım edebilir misiniz? Orderselect kullanıldı

Emir Toplamını değiştirmek ve her EA'nın yaptığı işlem sayısını kontrol etmek, ancak şimdi diğerleri işlem yapmayacak

 void OnTick ()

{
       double movingAverageSS = iMA ( NULL , 60 ,LowerMAS, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageSS = iMA ( NULL , 60 ,LowerMAS, 0 , MODE_SMA , PRICE_CLOSE , 1 );     
       double movingAverageSB = iMA ( NULL , 60 ,LowerMAB, 0 , MODE_SMA , PRICE_CLOSE , 0 );       
       double lastmovingAverageSB = iMA ( NULL , 60 ,LowerMAB, 0 , MODE_SMA , PRICE_CLOSE , 1 );          
       double movingAverageFS = iMA ( NULL , 60 ,UpperMAS, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageFS = iMA ( NULL , 60 ,UpperMAS, 0 , MODE_SMA , PRICE_CLOSE , 1 );   
       double movingAverageFB = iMA ( NULL , 60 ,UpperMAB, 0 , MODE_SMA , PRICE_CLOSE , 0 );    
       double lastmovingAverageFB = iMA ( NULL , 60 ,UpperMAB, 0 , MODE_SMA , PRICE_CLOSE , 1 );    
       int b; int bM; int s; int sM;    
       bool res = ( OrderSelect (b,SELECT_BY_POS));    
       bool resM = ( OrderSelect (bM,SELECT_BY_POS));    
       bool ses = ( OrderSelect (s,SELECT_BY_POS));    
       bool sesM = ( OrderSelect (sM,SELECT_BY_POS));    
       
       if ((lastmovingAverageFB<lastmovingAverageSB) && (movingAverageFB > movingAverageSB) && res == false   && resM == false )      
         {
         b = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB1* _Point , NULL , 1 , 0 ,Green);       
         bM = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB2* _Point , NULL , 2 , 0 ,Green);       
         }       
         else if ((lastmovingAverageFS>lastmovingAverageSS)&&(movingAverageFS<movingAverageSS) && ses == false && sesM == false )     
         {  
         s = OrderSend ( Symbol (),OP_SELL,lotSize,Bid, 4 ,Ask + SLPS* _Point ,Ask - TPS1* _Point , NULL , 3 , 0 ,Red);       
        sM = OrderSend ( Symbol (),OP_SELL,lotSize,Bid, 4 ,Ask + SLPS* _Point ,Ask - TPS2* _Point , NULL , 4 , 0 ,Red);   
}


 
&& res == false

Orderselect, bir sipariş seçtiyse true değerini döndürür.

Belki bir sihirli sayıyı sembol adı ile birlikte kullanabilirsiniz.

İşte çalışabileceğiniz makaledeki bir örnek: https://www.mql5.com/en/articles/1359

MagicNumber: "Magic" Identifier of the Order
MagicNumber: "Magic" Identifier of the Order
  • www.mql5.com
In МТ3, management of open positions was rather time-taking. Traders had at their disposal a rather limited tool set to work with the list of open and closed positions. The problem of distinguishing between "own" and "someone else's" positions was solved in rather complicated ways. In МТ4, the situation has cardinally changed. Now, trader can...
 
  1.        int b; int bM; int s; int sM;    
           bool res = ( OrderSelect (b,SELECT_BY_POS));    
           bool resM = ( OrderSelect (bM,SELECT_BY_POS));    
           bool ses = ( OrderSelect (s,SELECT_BY_POS));    
           bool sesM = ( OrderSelect (sM,SELECT_BY_POS));    

    b değer olmadığı için OrderSelect başarısız olur. bM değer yok, OrderSelect başarısız oluyor. s değer olmadığı için OrderSelect başarısız olur. sM değer yok, OrderSelect başarısız oluyor.

  2. Birden fazla sipariş seçmenin amacı nedir? Sonuç, son başarılı seçimdir.

  3.          b = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 , Ask - SLPB* _Point , Ask + TPB1* _Point , NULL , 1 , 0 ,Green);       
             bM = OrderSend ( Symbol (),OP_BUY,lotSize,Ask, 4 ,Ask - SLPB* _Point , Ask + TPB2* _Point , NULL , 2 , 0 ,Green);       
    
    b ve bM yerel değişkenlerdir. Geri döndüğünüzde bilet numaraları kaybolur.

  4. Neden pozisyona göre seçmeye çalışıyorsunuz da bilet numaralarını kaydetmeye çalışıyorsunuz? Geçerli bir bilet numarası ile seçerseniz, bu siparişin açık olduğu anlamına gelmez.

  5. Ask'ta satın alır ve Bid'de satarsınız.

    1. Alış emrinizin TP/SL'si (veya Sell Stop's/Sell Limit'in girişi) Bid / OrderClosePrice ona ulaştığında tetiklenir. Ask ± n'yi kullanmak, yayılma yoluyla SL'nizi kısaltır ve TP'nizi uzatır. Belirtilen miktarın her iki yönde de kullanılmasını istemiyor musunuz?

    2. Satış emrinizin TP/SL'si (veya Buy Stop's/Buy Limit'in girişi), Ask / OrderClosePrice ona ulaştığında tetiklenecektir. Belirli bir Teklif fiyatında tetiklemek için ortalama yayılmayı ekleyin.
      MODE_SPREAD (Paul) - MQL4 programlama forumu - Sayfa 3 #25

    3. Grafikler yalnızca Teklif fiyatlarını gösterir. Farkın ne kadar büyük olduğunu görmek için Sor satırını açın ( Araçlar → Seçenekler (kontrol+O) → çizelgeler → Soru satırını göster .)
      Değişken spreadli çoğu broker, gün sonunda (5 PM ET) ± 30 dakika önemli ölçüde genişler. GBPJPY'm (OANDA) ortalama yayılma = 26 puan, ancak ortalama maksimum yayılma = 134 gösteriyor.