MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 41 1...343536373839404142434445464748...1953 Yeni yorum Artyom Trishkin 2016.12.21 01:36 #401 Vitaly Muzichenko : Evet, haklısın, sadece kod öyle bir tarzda yazılmış ki, önceki konuşmacı onu yanlış yorumlamış. Kontrol etmeye ne dersin? //+------------------------------------------------------------------+ //| TestLogics.mq4 | //| Copyright 2016, Artem A. Trishkin, Skype artmedia70 | //| https://login.mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70" #property link "https://login.mql5.com/ru/users/artmedia70" #property version "1.00" #property strict #property script_show_inputs //--- input parameters input int Value= 0 ; // Количество имеющихся ордеров //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart () { //--- if (Value> 0 ) Alert ( "1. Количество ордеров=" ,Value); else Alert ( "2. Это код после else" ); { Alert ( "3. Ордера отсутствуют" ); } } //+------------------------------------------------------------------+ Kıvrımlı parantez içindeki kod, if-else koşuluna uygulanmaz ve Value içindeki değerden bağımsız olarak her zaman yürütülür. Any questions from newcomers Yeni başlayanlardan sorular MQL5 Questions from Beginners MQL5 Vitaly Muzichenko 2016.12.21 01:45 #402 Artyom Trishkin : Kontrol etmeye ne dersin? Kıvrımlı parantez içindeki kod, if-else koşuluna uygulanmaz ve Value içindeki değerden bağımsız olarak her zaman yürütülür. pancake, gerçekten de, şimdi orijinal kodu tekrar gözden geçirdi ve yanlıştı. Bir tür eğri yazma tarzı - kafamı karıştırdı. Mickey Moose 2016.12.21 01:57 #403 Yeniden kontrol edildi, "ekstra" kaldırıldı sıfıra bölme gitti Dosyalar: zero.mq4 5 kb Vitaly Muzichenko 2016.12.21 02:07 #404 trader781 : Yeniden kontrol edildi, "ekstra" kaldırıldı sıfıra bölme gitti Vitalie Postolache 2016.12.21 02:08 #405 trader781 : Yeniden kontrol edildi, "ekstra" kaldırıldı sıfıra bölme gitti Çünkü bölenin 0'dan farklı olup olmadığına dair bir kontrol yoktur. Sipariş ve lot 0 olmadığında aşağıdaki kodu çalıştırmanın anlamı nedir? Vitaly Muzichenko 2016.12.21 02:11 #406 bir çek koy void ModifyOrders() { double avg_price= 0 ; price= 0 ; bool z= true ; double orderlots= 0 ; for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) { if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==Magic) && ( OrderType ()==FindLastOType())) { price+= OrderOpenPrice ()* OrderLots (); orderlots+= OrderLots (); } } if (orderlots== 0 ) { return ; } // если ничего нет - выходим avg_price= NormalizeDouble (price / orderlots, Digits ); if (FindLastOType()== OP_BUY ) tp= NormalizeDouble (avg_price+TakeProfit* Point (), Digits ); if (FindLastOType()== OP_SELL ) tp= NormalizeDouble (avg_price-TakeProfit* Point (), Digits ); for (i= OrdersTotal ()- 1 ; i>= 0 ; i--) { if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ()) && ( OrderMagicNumber ()==Magic) &&( OrderType ()==FindLastOType())) z= OrderModify ( OrderTicket (), OrderOpenPrice (), 0 ,tp, 0 ); if (!z) Print ( "Ошибка функции модифицирования" ); } } Any questions from newcomers Questions from Beginners MQL5 10points 3.mq4 Mickey Moose 2016.12.21 02:17 #407 Vitaly Muzichenko : bir çek koy Vitalie Postolache : Ama çok şey kaçırdım, teşekkürler. Vitaly Muzichenko 2016.12.21 02:21 #408 trader781 : Ama çok şey kaçırdım, teşekkürler. Evet atladıkları normal, dergi okumaması normal değil, hepsi orada yazıyor, hatanın hangi satırda olduğu yazıyor. Mickey Moose 2016.12.21 02:27 #409 Vitaly Muzichenko : Evet atladıkları normal, dergi okumamaları normal değil, hepsi orada yazıyor. Okumak niyetinde değildim. "Piyasada doğrulama için" yazıyor. Ürünlerim asla piyasada olmayacak. sıfıra bölme hakkında peki ya yukarıdaki? Oradan sipariş almalı { fiyat+= OrderOpenPrice ()* OrderLots (); sipariş lotları+= sipariş lotları (); } } if (orderlots== 0 ) { dönüş ; } // hiçbir şey yoksa - çıkış avg_price= NormalizeDouble (fiyat / sipariş lotları, Rakamlar ); if (FindLastOType()== OP_BUY ) tp= NormalizeDouble (ort_price+TakeProfit* Point (), Digits ); if (FindLastOType()== OP_SELL ) tp= NormalizeDouble (avg_price-TakeProfit* Point (), Digits ); Yeni başlayanlardan sorular MQL4 [ARŞİV!] Forumu kirletmemek için Forumu kirletmemek için herhangi Vitaly Muzichenko 2016.12.21 02:31 #410 trader781 : Okumak niyetinde değildim. "Piyasada doğrulama için" yazıyor. Ürünlerim asla piyasada olmayacak. Test cihazındaki günlükten bahsediyorum Eklendi: Kodu normal bir duruma getirin, inceleyin, ardından test cihazında çalıştırın ve hata günlüğünü okuyun. Burada kod parçacıkları yayınlıyorsunuz. 1...343536373839404142434445464748...1953 Yeni yorum
Evet, haklısın, sadece kod öyle bir tarzda yazılmış ki, önceki konuşmacı onu yanlış yorumlamış.
Kontrol etmeye ne dersin?
//| TestLogics.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Value= 0 ; // Количество имеющихся ордеров
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart ()
{
//---
if (Value> 0 ) Alert ( "1. Количество ордеров=" ,Value);
else Alert ( "2. Это код после else" );
{
Alert ( "3. Ордера отсутствуют" );
}
}
//+------------------------------------------------------------------+
Kontrol etmeye ne dersin?
pancake, gerçekten de, şimdi orijinal kodu tekrar gözden geçirdi ve yanlıştı. Bir tür eğri yazma tarzı - kafamı karıştırdı.
Yeniden kontrol edildi, "ekstra" kaldırıldı
sıfıra bölme gitti
Yeniden kontrol edildi, "ekstra" kaldırıldı
sıfıra bölme gitti
Yeniden kontrol edildi, "ekstra" kaldırıldı
sıfıra bölme gitti
Çünkü bölenin 0'dan farklı olup olmadığına dair bir kontrol yoktur. Sipariş ve lot 0 olmadığında aşağıdaki kodu çalıştırmanın anlamı nedir?
bir çek koy
{
double avg_price= 0 ;
price= 0 ;
bool z= true ;
double orderlots= 0 ;
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
&& ( OrderMagicNumber ()==Magic) && ( OrderType ()==FindLastOType()))
{
price+= OrderOpenPrice ()* OrderLots ();
orderlots+= OrderLots ();
}
}
if (orderlots== 0 ) { return ; } // если ничего нет - выходим
avg_price= NormalizeDouble (price / orderlots, Digits );
if (FindLastOType()== OP_BUY ) tp= NormalizeDouble (avg_price+TakeProfit* Point (), Digits );
if (FindLastOType()== OP_SELL ) tp= NormalizeDouble (avg_price-TakeProfit* Point (), Digits );
for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
if (( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) && ( OrderSymbol ()== Symbol ())
&& ( OrderMagicNumber ()==Magic) &&( OrderType ()==FindLastOType()))
z= OrderModify ( OrderTicket (), OrderOpenPrice (), 0 ,tp, 0 );
if (!z)
Print ( "Ошибка функции модифицирования" );
}
}
bir çek koy
Ama çok şey kaçırdım, teşekkürler.
Evet atladıkları normal, dergi okumamaları normal değil, hepsi orada yazıyor.
Okumak niyetinde değildim. "Piyasada doğrulama için" yazıyor. Ürünlerim asla piyasada olmayacak.
sıfıra bölme hakkında
peki ya yukarıdaki? Oradan sipariş almalı
{
fiyat+= OrderOpenPrice ()* OrderLots ();
sipariş lotları+= sipariş lotları ();
}
}
if (orderlots== 0 ) { dönüş ; } // hiçbir şey yoksa - çıkış
avg_price= NormalizeDouble (fiyat / sipariş lotları, Rakamlar );
if (FindLastOType()== OP_BUY ) tp= NormalizeDouble (ort_price+TakeProfit* Point (), Digits );
if (FindLastOType()== OP_SELL ) tp= NormalizeDouble (avg_price-TakeProfit* Point (), Digits );
Okumak niyetinde değildim. "Piyasada doğrulama için" yazıyor. Ürünlerim asla piyasada olmayacak.
Test cihazındaki günlükten bahsediyorum
Eklendi: Kodu normal bir duruma getirin, inceleyin, ardından test cihazında çalıştırın ve hata günlüğünü okuyun. Burada kod parçacıkları yayınlıyorsunuz.