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

 

Ve koddaki aşağıdaki kısaltılmış yapı doğrudur: a < b && ( c > d1 || c > d2 || c > d3) ?

Bu, şunu yazmaktan kaçınmak içindir: (a < b && c > d1) || (a < b && c > d2), vb. bir cok zaman.

 
HeAic :

Ve koddaki aşağıdaki kısaltılmış yapı doğrudur: a < b && ( c > d1 || c > d2 || c > d3) ?

Bu, şunu yazmaktan kaçınmak içindir: (a < b && c > d1) || (a < b && c > d2), vb. bir cok zaman.

Tabiki olacak. Bu kadar büyük yapıları yazarken yapacağım tek şey parantez içinde öncelikleri açıkça belirtmek:

(a < b)  && ( c > d1 || c >d2 || c > d3)

MT4/5 derleyicileri için, mevcut öncelikler ifadenin sonucunun farklı bir şekilde hesaplanmasına izin vermeyeceğinden, belirtilen parantezler olmadan mümkündür. Ancak bunun gibi parantezler iki avantaj sağlar:

  1. İfadenin, öncelik hakkında soru sormadan görsel olarak algılanması daha kolaydır (her derleyici için aynı öncelikleri hatırlamayın).
  2. Kod, farklı önceliklere sahip olabilecek başka bir derleyiciye taşınırsa, kod geçerli derleyicidekiyle aynı şekilde çalışır.
 
Alexey Viktorov :

teşekkür ederim eğer

S_sk= SymbolInfoInteger ( "EURUSD" , SYMBOL_SELECT );

false döndü, Market Watch'ta sembol yok, oraya nasıl eklenir?

 
lil_lil :

teşekkür ederim eğer

false döndü, Market Watch'ta sembol yok, oraya nasıl eklenir?

SembolSeç()

Her şey kılavuzda. İşlev adı ve F1 için imleç

 
Artyom Trishkin :

SembolSeç()

Her şey kılavuzda. İşlev adı ve F1 için imleç

Teşekkür ederim.

 

Söyle bana, sebebi nedir? MT5'te limit emirleri belirleyen bir komut dosyası yazdım. Terminaldeki tabloya sipariş bıraktığımda, sonuç.retcode 10009 ( sipariş tamamlandı ) döndürmesine rağmen siparişler ayarlanmıyor.

 
iv1986 :

Söyle bana, sebebi nedir? MT5'te limit emirleri belirleyen bir komut dosyası yazdım. Terminaldeki tabloya sipariş bıraktığımda, sonuç.retcode 10009 (sipariş tamamlandı) döndürmesine rağmen siparişler ayarlanmıyor

  1. Kod.
  2. dergi.
  3. İfade.
Bütün bunlar nerede?

 
Ihor Herasko :

  1. Kod.
  2. dergi.
  3. İfade.
Bütün bunlar nerede?

{MqlTradeRequest isteği={0};
MqlTradeResult sonuç={0};
double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
double p=NormalizeDouble(ChartPriceOnDropped(),rakamlar);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
intV=75;
eğer (p<Sor)
{
request.action =TRADE_ACTION_PENDING; // ticaret işlemi türü
request.symbol =Sembol(); // sembol
request.volume =MathFloor(AccountInfoDouble(HESAP_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE )));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
request.type =ORDER_TYPE_BUY_LIMIT; // sipariş türü
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),rakamlar); // açılış fiyatı
request.sapma=50; // izin verilen fiyat sapması
request.sl=p; // Zarar Durdur pozisyonları
request.tp =NormalizeDouble(Sor+(Sor-p)*3,rakamlar); // Kar pozisyonları al
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=Sor;
OrderSend(istek,sonuç);
}
if (p>Teklif)
{
request.action =TRADE_ACTION_PENDING; // ticaret işlemi türü
request.symbol =Sembol(); // sembol
request.volume =MathFloor(AccountInfoDouble(HESAP_BALANCE)/V/((p-Teklif)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // Ses
request.type=ORDER_TYPE_SELL_LIMIT; // sipariş türü
request.price =NormalizeDouble(Teklif+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // açılış fiyatı
request.sapma=50; // izin verilen fiyat sapması
request.sl=p; // Zarar Durdur pozisyonları
request.tp =NormalizeDouble(Teklif-(p-Teklif)*3,rakam); // Kar pozisyonları al
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=Teklif;
OrderSend(istek,sonuç);

}

günlükte yazıyor: 2018.05.14 10:12:38.187 ticaret '992940': satış limiti 3.00 Si-6.18, 62066'da (62065) sl: 62331 tp: 61267 yürütme için yerleştirildi

 
iv1986 :

günlükte yazıyor: 2018.05.14 10:12:38.187 ticaret '992940': satış limiti 3.00 Si-6.18, 62066'da (62065) sl: 62331 tp: 61267 yürütme için yerleştirildi

Genel dergide yazıyor. Peki ya "Uzmanlar" dergisi? Ve sadece bir satır değil, tüm günlüğü. Anahtar deliğinden görülecek çok az şey var.

Ayrıca, yukarıdaki kodda dönüş kodları kontrolü yoktur. Bu nedenle, hata koduyla ilgili sonucun neye dayanarak yapıldığı açık değildir.

Bir şeyi tavsiye etmek için açıkça tekrarlanabilir adımlara sahip olmanız gerekir (sizinle aynı şeyi görmek için), ancak burada değiller. Kodun sorunlu kısmını kesin, kendiniz çalıştırın ve ardından tam olarak neyin işe yaramadığını gösterin.

Not Kodu eklemek için lütfen "</>" simgesini veya Alt+S'yi kullanın.

 

Kodun sonunda başka bir Uyarı vardır (result.retcode);

genel dergide:

2018.05.14 12:08:16.984 Kodlar komut dosyası LIMIT (Si-6.18,M15) başarıyla yüklendi

2018.05.14 12:08:17.187 ticaret '992940': satın alma limiti 3.00 Si-6.18, 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.484 ticaret '992940': kabul edilen satın alma limiti 3.00 Si-6.18, 62091 (62092) sl: 61821 tp: 62905

2018.05.14 12:08:17.500 ticaret '992940': satın alma limiti 3.00 Si-6.18 at 62091 (62092) sl: 61821 tp: 62905 yürütme için yerleştirildi

2018.05.14 12:08:17.546 ticaret '992940': sipariş #13235300 satın alma limiti 3.00 / 3.00 Si-6.18, 62091'de 337.532 ms'de yapıldı

2018.05.14 12:08:17.578 Kodlar komut dosyası LIMIT (Si-6.18,M15) kaldırıldı


Uzmanlar sütununda: 2018.05.14 12:08:17.578 SINIR (Si-6.18,M15) Uyarı: 10009, başka bir şey yok