[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 582

 
Azerus :

En son yayınlanan Kim işlevi GetPotentialLossInCurrency (https://forum.mql4.com/en/11287/page107) yalnızca açık siparişleri dikkate alır:

Bekleyen emirleri ekleyerek (sadece diğer türleri ekleyerek) biraz genişletmeye çalıştım: ancak bekleyen emirler dikkate alınmadı. Farklı mı sayılıyorlar? Belgeler bu konuda hiçbir şey söylemiyor ....


Bekleyen emirlerde "mevduat para biriminde açık pozisyonların toplam potansiyel kaybı" yoktur .

GetPotentialLossInCurrency() işlevi, mevduat para biriminde açık pozisyonların toplam potansiyel kaybını döndürür.

Piyasadaki pozisyonlardan bahsediyoruz. Bu piyasa işlevlerinde F1'e basın, bilgileri dikkatlice tekrar okuyun:

tv= MarketInfo ( OrderSymbol (), MODE_TICKVALUE);
               if ( OrderType ()==OP_BUY) {
                pl+=( OrderOpenPrice ()- OrderStopLoss ())/po* OrderLots ()*tv;
              }
               if ( OrderType ()==OP_SELL) {
                pl+=( OrderStopLoss ()- OrderOpenPrice ())/po* OrderLots ()*tv;
              }
              pl+= OrderCommission ()+ OrderSwap ();
 
Roman. :


Bekleyen emirlerde "mevduat para biriminde açık pozisyonların toplam potansiyel kaybı" yoktur .

GetPotentialLossInCurrency() işlevi, mevduat para biriminde açık pozisyonların toplam potansiyel kaybını döndürür.

Piyasadaki pozisyonlardan bahsediyoruz. Bu piyasa işlevlerinde F1'e basın, bilgileri dikkatlice tekrar okuyun:

 

Programcılar için soru:
yeni bir çubukta danışman, euro siparişinin canlı olup olmadığını kontrol eder (örneğin), değilse, yeni bir anlaşma yapar, evet ise, her şeyi olduğu gibi bırakır.
aşağıdaki koşulu ayarlayın:

 for ( int i= 1 ; i<= OrdersTotal (); i++)           // Цикл перебора ордер
     {
       if ( OrderSelect (i- 1 ,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
         int Tip= OrderType ();                   // Тип ордера
         if ( OrderSymbol ()!= "EURUSD" ||Tip> 1 ){ continue ;} else { // Не наш ордер

      
   RefreshRates ();
   double point5 = MarketInfo ( "EURUSD" , MODE_POINT); //Запрос Point
 double bid5 = MarketInfo ( "EURUSD" , MODE_BID); // Запрос значения Bid
 double ask5 = MarketInfo ( "EURUSD" , MODE_ASK); // Запрос значения Ask
   double SL5 = NormalizeDouble (bid5+(Stop*point5), MarketInfo ( "EURUSD" , MODE_DIGITS));
 double TP5 = NormalizeDouble (bid5-(Profit*point5), MarketInfo ( "EURUSD" , MODE_DIGITS)); 
   double SL5v = NormalizeDouble (bid5-(Stop*point5), MarketInfo ( "EURUSD" , MODE_DIGITS));
 double TP5v = NormalizeDouble (bid5+(Profit*point5), MarketInfo ( "EURUSD" , MODE_DIGITS));  
 if (( iVolume ( "EURUSD" , Period (), 4 )) > ( iVolume ( "EURUSD" , Period (), 1 ))) { 
 ticket= OrderSend ( "EURUSD" ,OP_SELL,lot_EUR,bid5,Slip, 0 , 0 ); // Открытие Sell
 OrderSelect (ticket,SELECT_BY_TICKET);
 OrderModify ( OrderTicket (), OrderOpenPrice (),SL5,TP5 , 0 , CLR_NONE ); 
 { Alert ( GetLastError ());} // Сообщение об ошибке
} else {ticket= OrderSend ( "EURUSD" ,OP_BUY,lot_EUR,ask5,Slip, 0 , 0 ); // Открытие BUY
 OrderSelect (ticket,SELECT_BY_TICKET);
 OrderModify ( OrderTicket (), OrderOpenPrice (),SL5v,TP5v , 0 , CLR_NONE ); 
 { Alert ( GetLastError ());} // Сообщение об ошибке
}}

        }                                       // Конец анализа орд.
     }                                           // Конец перебора орд.

Ama kod çalışmıyor. Hata nerede?

 
Cruc :

Programcılar için soru:
yeni bir çubukta danışman, euro siparişinin canlı olup olmadığını kontrol eder (örneğin), değilse, yeni bir anlaşma yapar, evet ise, her şeyi olduğu gibi bırakır.
aşağıdaki koşulu ayarlayın:

Ama kod çalışmıyor. Hata nerede?

bir düzine sipariş varsa ne olacağını görün ve sizinki yedinci (örneğin)

ilkini kontrol et - bizim değil. bir sipariş vereceğiz

ikinciyi kontrol et - bizim değil. bir sipariş vereceğiz

...

yedinciyi kontrol et - bizim

sekizinciyi kontrol et - bizim değil. bir sipariş vereceğiz

...

 


İşin özü şudur - bir çift için bir grup sipariş açtığımızda, siparişin tüm örtüşmesini tek bir hareketle kapatabilirsiniz.

Siparişi değiştir/sil--->tür---->Kapatılan siparişleri kapat

Kapanan emirleri siler... MQL'de böyle bir fonksiyon var mı?

Hata, buldum: https://forum.mql4.com/ru/4822

 
ilunga :

bir düzine sipariş varsa ne olacağını görün ve sizinki yedinci (örneğin)

ilkini kontrol et - bizim değil. bir sipariş vereceğiz

ikinciyi kontrol et - bizim değil. bir sipariş vereceğiz

...

yedinciyi kontrol et - bizim

sekizinciyi kontrol et - bizim değil. bir sipariş vereceğiz

...


Bu çift için sadece bir sipariş var. Yalnızca bu EURUSD sembolünü kontrol ediyorum, ancak muhtemelen durumu doğru ayarlamadım

if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{

if( OrderSymbol()= Symbol ("EURUSD"){ gerekir

 
Cruc :


Bu çift için sadece bir sipariş var. Yalnızca bu EURUSD sembolünü kontrol ediyorum, ancak muhtemelen durumu doğru ayarlamadım

if(OrderSymbol()!="EURUSD"||Tip>1){continue;}else{

if(OrderSymbol()= Symbol("EURUSD"){ gerekir

uzmanda tamamen 1 varsa, o zaman biletini hatırlayabilir ve her seferinde tüm siparişleri gözden geçirmeden kapanıp kapanmadığını kontrol edebilirsiniz.
 
ilunga :
uzmanda tamamen 1 varsa, o zaman biletini hatırlayabilir ve her seferinde tüm siparişleri gözden geçirmeden kapanıp kapanmadığını kontrol edebilirsiniz.

Tavsiye için çok teşekkür ederim, neredeyse bunu yapacağımı tahmin ediyordum, ancak siparişin işe yarayıp yaramadığını hatırlamıyorum, o zaman bilet -10 değerini mi alıyor?
 
Roman. :


Bekleyen emirlerde "mevduat para biriminde açık pozisyonların toplam potansiyel kaybı" yoktur .

GetPotentialLossInCurrency() işlevi, mevduat para biriminde açık pozisyonların toplam potansiyel kaybını döndürür.

Piyasadaki pozisyonlardan bahsediyoruz. Bu piyasa işlevlerinde F1'e basın, bilgileri dikkatlice tekrar okuyun:


GetPotentialLossInCurrency() işlevinin açık pozisyonlardan bahsettiğini çok iyi anlıyorum. Bir sorum var: Neden bekleyen siparişleri dikkate alamıyorum?

Belgeler:

 double OrderOpenPrice (  )

 Возвращает цену открытия для выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect ().

double OrderStopLoss (   )

 Возвращает значение цены закрытия позиции при достижении уровня убыточности (stop loss) для текущего выбранного ордера.
 Ордер должен быть предварительно выбран с помощью функции OrderSelect ().

Hiçbir yerde OrderOpenPrice ve/veya OrderStopLoss'un yalnızca açık siparişler için geçerli olduğu söylenemez.

 
Cruc :

Tavsiye için çok teşekkür ederim, neredeyse bunu yapacağımı tahmin ediyordum, ancak siparişin işe yarayıp yaramadığını hatırlamıyorum, o zaman bilet -10 değerini alıyor mu?
Bilet olduğu gibi kalır