[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 768

 
FoxUA :


Sadece fonksiyonu çağırmam gerekiyor ve hepsi bu, sadece bir satıra ihtiyacım var "eğer birden fazla sipariş varsa .... o zaman" ve hepsi bu ve bana burada bütün bir fonksiyon sunuyorsunuz

sipariş verilerini bu şekilde saklıyorum


Bu, kütüphaneye basit bir yazma işlemidir.

Girdi, hesaplanan siparişin türüdür ve büyüsü, açık veya verilen siparişlerin sayısını döndürür.

 int ChPos( int TypePos, int Magic) 
{
// возвращает кол-во позицй которые открыты или выставленн отложками с магиком  Magic 
   int i;
   int count= 0 ;
   for ( i= 0 ; i < OrdersTotal (); i++)         
   {
      if ( OrderSelect (i,SELECT_BY_POS)==true) 
       {                                   
           if (OrderType()==OP_BUY && TypePos==OP_BUY && Magic==OrderMagicNumber()){count++;}
           if (OrderType()==OP_SELL && TypePos==OP_SELL && Magic==OrderMagicNumber()){count++;}
           if (OrderType()==OP_BUYLIMIT && TypePos==OP_BUYLIMIT && Magic==OrderMagicNumber()){count++;}
           if (OrderType()==OP_BUYSTOP && TypePos==OP_BUYSTOP && Magic==OrderMagicNumber()){count++;}
           if (OrderType()==OP_SELLLIMIT && TypePos==OP_SELLLIMIT && Magic==OrderMagicNumber()){count++;}
           if (OrderType()==OP_SELLSTOP && TypePos==OP_SELLSTOP && Magic==OrderMagicNumber()){count++;}
       }
    }   
return (count);
}

bu şekilde kullanılabilir

if ((FastEma - SmallEma) > Karşılaştırıcı*Nokta && ChPos(OP_BUY,1111) < OpenPosition)

 
ivandurak :


Bu, kütüphaneye basit bir yazma işlemidir.

Girdi, hesaplanan siparişin türüdür ve büyüsü, açık veya verilen siparişlerin sayısını döndürür.

bu şekilde kullanılabilir

if ((FastEma - SmallEma) > Karşılaştırıcı*Nokta && ChPos(OP_BUY,1111) < OpenPosition)

Böyle bir işlevim var ve buna ihtiyacım yok, ihtiyacım var
sadece bir satır "eğer birden fazla sipariş varsa .... o zaman" ve bu kadar

gösterdiğin işleve sahip verilerim burada saklanıyor

 int total_order;             // переменная в которой хранится общее количество открытых ордеров в терминале
int my_total_order;         // переменная в которой хранится общее количество открытых ордеров с нашим Magic

ve işte ona benziyor

 void Myorders(){
       int cnt;
      total_order = OrdersTotal();
      my_total_order = 0 ;
      HaveBuyOrder          = false ;
      HaveSellOrder         = false ;
      HaveBuyStopOrder      = false ;
      HaveSellStopOrder     = false ;
      HaveBuyLimitOrder     = false ;
      HaveSellLimitOrder    = false ;
      HaveBuyLimitOrderEnd  = false ;
      HaveSellLimitOrderEnd = false ;      
       for (cnt = total_order - 1 ; cnt >= 0 ; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
       if (OrderSymbol() == Curr_symb && OrderMagicNumber() == Magic) {
         if (OrderType() == OP_BUY)       {HaveBuyOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELL)      {HaveSellOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYSTOP)   {HaveBuyStopOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELLSTOP)  {HaveSellStopOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYLIMIT)  {HaveBuyLimitOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELLLIMIT) {HaveSellLimitOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYLIMIT)  {HaveBuyLimitOrderEnd = true ;  my_total_order++;}
         if (OrderType() == OP_SELLLIMIT) {HaveSellLimitOrderEnd = true ; my_total_order++;}
} } }
 

yakalanmış gibi görünüyor

static int aaa = OrdersHistoryTotal()+ OrdersTotal()

if (koşulunuz && aaa < OrdersHistoryTotal()+ OrdersTotal() )

{

operatörler

aaa=OrdersHistoryTotal()+OrdersTotal()

}

Eğer öyleyse, o zaman sihirbazları hesaba katarsak, işlevde hala daha iyidir. Ne çağrıştırdığını seslendirebilirsin. Mantık biraz garip doğru anladıysam başka bir emir açılırsa işlem yapmanız gerekiyor OpenPosition'dan daha kolay emir açmak değil mi?

P S Fonksiyonunuz toplam açık emir ve verilen bekleyen emir sayısını döndürür.Kaç OP_BUY emri varsa, OP_BUYLIMIT OP_SELLLIMIT OP_SELL ve diğerleri varsa, vermez.

 
ivandurak :

evet, anladım, şimdi if işlevindeki sorun delinmenin ne olduğunu anlamamam değil, ne yaptım

 if (bt== 1 &&bl== 7 ) 
{OpenBuyStopOrder(Lot,PRBidS);
OpenBuyLimitOrder(Lot* 3 ,PRAskL); 
   if (HaveBuyLimitOrderEnd== true ) 
  {ModifyBuyStopOrder(PRAskS);  // Выбираем            
  } }          
  

genel olarak, öz, ilk anlamın yerine getirileceği şekildedir, onlar hakkında şikayet yoktur.

ama istemiyorsa (HaveBuyLimitOrderEnd== true )
{ModifyBuyStopOrder(PRAskS); // Seçmek
} }

kelimelerle, kulağa şöyle geliyor: HaveBuyLimitOrderEnd emri varsa, o zaman bunu fiyat değişikliği ile değiştireceğiz PRAskS

bir şey doğru değil, ama anlayamadığım şey, HaveBuyLimitOrderEnd'in değerini, yazıdaki yukarıdaki koddan void Myorders () 'dan alıyorum

ve evet, bu değer if(bt==1&&bl==7) doğruysa ana tobish'tir, aşağıdaki her şeyi uygularız


evet, büyük olasılıkla HaveBuyLimitOrderEnd== true ile ilgili bir şey çünkü OrderLots()==3*Çok şey ayarladım, şimdi her şey çalışıyor, tüm siparişleri çok fazla 0.3 ile değiştirmeye başlıyor

 
void Myorders(){
      int cnt;
      total_order = OrdersTotal();
      my_total_order = 0 ;
      HaveBuyOrder          = false ;
      HaveSellOrder         = false ;
      HaveBuyStopOrder      = false ;
      HaveSellStopOrder     = false ;
      HaveBuyLimitOrder     = false ;
      HaveSellLimitOrder    = false ;
      HaveBuyLimitOrderEnd  = false ;
      HaveSellLimitOrderEnd = false ;      
      for (cnt = total_order - 1 ; cnt >= 0 ; cnt--) {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Curr_symb && OrderMagicNumber() == Magic) {
         if (OrderType() == OP_BUY)       {HaveBuyOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELL)      {HaveSellOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYSTOP)   {HaveBuyStopOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELLSTOP)  {HaveSellStopOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYLIMIT)  {HaveBuyLimitOrder = true ;  my_total_order++;}
         if (OrderType() == OP_SELLLIMIT) {HaveSellLimitOrder = true ; my_total_order++;}
         if (OrderType() == OP_BUYLIMIT)  {HaveBuyLimitOrderEnd = true ;  my_total_order++;}
         if (OrderType() == OP_SELLLIMIT) {HaveSellLimitOrderEnd = true ; my_total_order++;}
} } }
Neyin kırmızıyla vurgulandığına dikkat edin. İşlem emirlerinin türü aynıdır, ancak satırdaki değişkenler olması gerektiği gibi farklı şekilde ayarlanır.
 
ivandurak :
Neyin kırmızıyla vurgulandığına dikkat edin. İşlem emirlerinin türü aynıdır, ancak satırdaki değişkenler olması gerektiği gibi farklı şekilde ayarlanır.

evet öyle olmalı çünkü farklı bir açma fonksiyonu var ve isteği OrderType() ile yapmıyorum ama tobish bayrağının açık olup olmadığını soracağım ama sorun daha çok bu fonksiyonda değil çünkü geri kalanı istekler de çalışmıyor, önce ben attım VE BU İŞLEV İÇİN NORMALDE AÇIK

SORUN OPERATÖRDEKİ SORUNDADIR

 

Sorun başka bir yerde gibi görünüyor. Ancak kodun tamamını görmeniz gerekir.

 
Vinin :

Sorun başka bir yerde gibi görünüyor. Ancak kodun tamamını görmeniz gerekir.


kesinlikle bir başkasında değil, diğer her şey çalışıyor, sorun şu ki, istek (HaveBuyLimitOrderEnd == true) doğru değil, bu yüzden ona neyin değiştirilmesi ve silinmesi gerektiğini başka nasıl söyleyeceğimi şaşırıyorum,

veya sorgunun yapısı doğru değil

if(bs==1&&bl==3)
{OpenBuyLimitOrderEnd(Lot*15,PRaskL);

if (HaveBuyLimitOrderEnd==true)

{ModifyBuyStopOrder(PRAskS);
} }

 
FoxUA :

evet öyle olmalı çünkü farklı bir açma fonksiyonu var ve isteği OrderType() ile yapmıyorum ama tobish bayrağının açık olup olmadığını soracağım ama sorun daha çok bu fonksiyonda değil çünkü geri kalanı istekler de çalışmıyor, önce ben attım VE BU İŞLEV İÇİN NORMALDE AÇIK

SORUN OPERATÖRDEKİ SORUNDADIR

 if (bt== 1 &&bl== 7 ) 
{ OpenBuyStopOrder(Lot,PRBidS);
OpenBuyLimitOrder(Lot* 3 ,PRAskL); 
  if (HaveBuyLimitOrderEnd== true ) 
  {ModifyBuyStopOrder(PRAskS);  // Выбираем            
  } }         


Ancak ilginç bir şekilde, kırmızı ile vurgulanan işlevlerde HaveBuyLimitOrderEnd bayrağı true olarak ayarlanır, değilse, myorders() öğesini if öncesinde çağırmanız gerekir. Aksi takdirde, FIG orada ne olduğunu bilir. Ve her ihtimale karşı, bayraklar (değişkenler)

HaveBuyOrder=yanlış;
HaveSellOrder=yanlış;
HaveBuyStopOrder = yanlış;
HaveSellStopOrder = yanlış;
HaveBuyLimitOrder=false;
HaveSellLimitOrder=false;
HaveBuyLimitOrderEnd = yanlış;
HaveSellLimitOrderEnd = false;
küresel düzeyde tanımlanmalıdır.

 
ivandurak :


Ancak ilginç bir şekilde, kırmızı ile vurgulanan işlevlerde HaveBuyLimitOrderEnd bayrağı true olarak ayarlanır, değilse, myorders() öğesini if öncesinde çağırmanız gerekir. Aksi takdirde, FIG orada ne olduğunu bilir. Ve her ihtimale karşı, bayraklar (değişkenler)

HaveBuyOrder=yanlış;
HaveSellOrder=yanlış;
HaveBuyStopOrder = yanlış;
HaveSellStopOrder = yanlış;
HaveBuyLimitOrder=false;
HaveSellLimitOrder=false;
HaveBuyLimitOrderEnd = yanlış;
HaveSellLimitOrderEnd = false;
küresel düzeyde tanımlanmalıdır.

bu küresel


bool HaveBuyOrder; // açık piyasa satın alma emirleri için bayrak
bool HaveSellOrder; // açık piyasa satış emirleri için bayrak
bool HaveBuyStopSipariş; // açık bekleyen satın alma siparişleri için bayrak
bool HaveSellStopOrder; // açık bekleyen satış emirleri için bayrak
bool HaveBuyLimitOrder; // açık bekleyen satın alma siparişleri için bayrak
bool HaveSellLimitOrder; // açık bekleyen satış emirleri için bayrak
bool HaveBuyLimitOrderEnd; // açık bekleyen satın alma siparişleri için bayrak
bool HaveSellLimitOrderEnd; // açık bekleyen satış emirleri için bayrak

bu sipariş açma işlevinde

bilet = OrderSend(Curr_symb,OP_BUYSTOP, Lot, PRAskS, Slippage, SL, TP, 0, Magic, 0, CLR_NONE );
if (bilet > 0) {
HaveBuyStopOrder = true;

if (OrderSelect(bilet, SELECT_BY_TICKET,MODE_TRADES)) Print("BuyStop siparişi verme işlevi: ", OrderOpenPrice());
}
else Print("Hata # ", GetLastError(), " BuyStop siparişi verme işlevi",MarketInfo(Curr_symb,MODE_ASK));
bilet iadesi);
}

BAŞKA HER ŞEYİN ÇALIŞTIĞINI SÖYLEYİN

Neden: