Alım satımı örnek olarak verdim, bu butona başlamak fena olmayacak bir sürü algoritma var, spread genişledi, butona basıldı, telefona robotun durdurulduğuna veya takas edildiğine dair SMS geldi. 4 robot hesabında, 5.si hesap marjını kontrol ediyor, marj ayarlanan değere düştüğünde otomatik ticareti kesiyoruz ve ben gelip düşüşün nereye ve nereye tırmandığını görene kadar tüm robotlar pençelerini emiyor... ancak robotun tablodan çıkarılması serçe tabancasıdır... butonu tüm robotları belirli bir algoritmaya göre kesmenizi sağlayacak kapsamlı bir çözümdür.
Bir yerde mql5 için bir çözüm gördüm ama bulamıyorum
Ben de öyle söyledim - bu radikal bir çözüm. Doğru karar, danışmanın kodunu, belirli durumlarda ticari işlemler ve bunlarla bağlantılı her şeyi gerçekleştirmemesi için değiştirmektir. Örneğin, yayılma kontrolü temeldir:
voidOnTick ()
{
double fPoint = Point ();
if (fPoint <= 0.0 )
return ;
int nSpread = int ( MathRound (( Ask - Bid ) / fPoint));
if (nSpread > 50 )
return ;
... Действия советника при нормальном спреде
}
Dikdörtgenler çizen bir MQL4 betiği (aşağıdaki kod) yaptım (aşağıdaki şekil), ama görev bu değil. Kesikli bir STYLE_DOT çizgisi için, yalnızca genişlik 1 çalışır, 2 veya daha fazla ise düz bir çizgi çizer. Söyle bana, nerede hatam var yoksa bizden bir şey mi saklıyorlar?
#property strictvoidOnStart ()
{
//---
RectCreate( "rect1" , Time [ 1 ], Low [ 1 ], Time [ 10 ], High [ 10 ], clrYellow , STYLE_DOT , 1 , false );
RectCreate( "rect2" , Time [ 11 ], Low [ 11 ], Time [ 20 ], High [ 20 ], clrRed , STYLE_DOT , 2 , false );
//---Sleep ( 20 * 1000 );
ObjectsDeleteAll ( 0 );
}
//--- Function creates rectanglevoid RectCreate( conststring f_name, // rectangle namedatetime f_time1, // first point timedouble f_price1, // first point pricedatetime f_time2, // second point timedouble f_price2, // second point priceconstcolor f_color, // rectangle colorconstENUM_LINE_STYLE f_style, // style of rectangle linesconstint f_width, // width of rectangle linesconstbool f_fill) // filling rectangle with color
{
if ( ObjectCreate ( 0 ,f_name, OBJ_RECTANGLE , 0 ,f_time1,f_price1,f_time2,f_price2))
{
ObjectSetInteger ( 0 ,f_name, OBJPROP_COLOR ,f_color);
ObjectSetInteger ( 0 ,f_name, OBJPROP_STYLE ,f_style);
ObjectSetInteger ( 0 ,f_name, OBJPROP_WIDTH ,f_width);
ObjectSetInteger ( 0 ,f_name, OBJPROP_FILL ,f_fill);
ObjectSetInteger ( 0 ,f_name, OBJPROP_BACK , false );
ObjectSetInteger ( 0 ,f_name, OBJPROP_SELECTABLE , false );
ObjectSetInteger ( 0 ,f_name, OBJPROP_SELECTED , false );
}
}
Dikdörtgenler çizen bir MQL4 betiği (aşağıdaki kod) yaptım (aşağıdaki şekil), ama görev bu değil. Kesikli bir STYLE_DOT çizgisi için, yalnızca genişlik 1 çalışır, 2 veya daha fazla ise düz bir çizgi çizer. Söyle bana, nerede hatam var yoksa bizden bir şey mi saklıyorlar?
Stili ve kalınlığı manuel olarak çizmeyi ve değiştirmeyi denediniz mi? Ve bu deneylerden nasıl bir sonuç çıkarılabilir?
Artyom Trishkin : Stili ve kalınlığı manuel olarak çizmeyi ve değiştirmeyi denediniz mi? Ve bu deneylerden nasıl bir sonuç çıkarılabilir?
Cevabı buldum. Burada "Çizgi stili. Yalnızca çizgi genişliği 0 veya 1 olduğunda kullanılır" yazıyor. Görünüşe göre, 2 veya daha fazla kalınlıkta, katı bir çizgi hariç diğer çizgilerin çalışmamasının nedeni burada yatıyor.
Cevabı buldum. "Çizgi stili. Yalnızca çizgi ağırlığı 0 veya 1 olduğunda kullanılır" diyor. Görünüşe göre, 2 veya daha fazla kalınlıkta, katı bir çizgi hariç diğer çizgilerin çalışmamasının nedeni burada yatıyor.
Beyler, söyleyin bana, Kim'den son pozisyonun açılış bar numarasını veya -1'i döndüren bir fonksiyon aldım.
int NumberOfBarOpenLastPos( string sym= "" , int tf= 0 , int op=- 1 , int mn=- 1 )
{
datetime oot;
int i,k= OrdersTotal ();
if (sym== "" ) sym= Symbol ();
for (i= 0 ; i<k; i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()==sym)
{
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL || OrderType ()== OP_BUYLIMIT || OrderType ()== OP_SELLLIMIT )
{
if (op< 0 || OrderType ()==op)
{
if (mn< 0 || OrderMagicNumber ()==mn)
{
if (oot< OrderOpenTime ()) oot= OrderOpenTime ();
}
}
}
}
}
}
return ( iBarShift (sym, tf, oot, True ));
}
bu işlevi çağırdı ve koşulu yazdı
if ( Open [ 2 ]> Close [ 2 ] && Open [ 1 ]> Close [ 1 ] && Close [ 1 ]< Low [ 2 ])
{
Comment ( "цена входа = " , DoubleToStr ( Low [ 2 ], Digits ));
if (NumberOfBarOpenLastPos( "" , 0 ,- 1 ,- 1 )!= 0 ) //вызвал здесь
ticket= OrderSend ( Symbol (), OP_SELLLIMIT , 0.1 , Low [ 2 ], 2 , 0 , 0 ,magic, 0 );
if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES ))
TP= NormalizeDouble ( OrderOpenPrice ()-tp* Point , Digits );
SL= NormalizeDouble ( OrderOpenPrice ()+sl* Point , Digits );
modify= OrderModify (ticket, OrderOpenPrice (),SL,TP, 0 );
}
sonuç olarak bir emir açılıyor ama bara bir stop ile vurulursa ve poz girmek için yukarıdaki koşul yine de kaydedilirse anlaşma bu barda açılır, Print üzerinden fonksiyonun -1 döndürdüğüne baktım , ilk başta hiç emir olmadığı için düşündüm, ama sonra emirler ortaya çıktı ve hepsi aynı, durduktan sonra aynı barda, anlaşma açılıyor, yardım et, neyi yanlış yaptım?
Tünaydın. Söyleyin bana, MT4 ve MT5'te aynı enstrümanın farklı zaman dilimlerine sahip çizelgelerini ve bu zaman dilimleri için göstergeleri üst üste bindirmek mümkün mü? Örneğin, bir pencerede gün, 4 saat ve saat zaman dilimleriyle birlikte EUR/USD çiftinin 3 grafiğini ve ayrıca bu verilerden hareketli zaman dilimlerini bindirmek istiyorum. Mümkün mü? Herhangi bir yardım için mutlu olacağım.
Alım satımı örnek olarak verdim, bu butona başlamak fena olmayacak bir sürü algoritma var, spread genişledi, butona basıldı, telefona robotun durdurulduğuna veya takas edildiğine dair SMS geldi. 4 robot hesabında, 5.si hesap marjını kontrol ediyor, marj ayarlanan değere düştüğünde otomatik ticareti kesiyoruz ve ben gelip düşüşün nereye ve nereye tırmandığını görene kadar tüm robotlar pençelerini emiyor... ancak robotun tablodan çıkarılması serçe tabancasıdır... butonu tüm robotları belirli bir algoritmaya göre kesmenizi sağlayacak kapsamlı bir çözümdür.
Bir yerde mql5 için bir çözüm gördüm ama bulamıyorum
Ben de öyle söyledim - bu radikal bir çözüm. Doğru karar, danışmanın kodunu, belirli durumlarda ticari işlemler ve bunlarla bağlantılı her şeyi gerçekleştirmemesi için değiştirmektir. Örneğin, yayılma kontrolü temeldir:
Peki, Ctrl+E tuşlarına öykünerek Autotrade düğmesine basabilir/basmayı kaldırabilirsiniz. Ama dediğim gibi, bu zaten WinAPI kullanıyor:
Peki, Ctrl+E tuşlarına öykünerek Autotrade düğmesine basabilir/basmayı kaldırabilirsiniz. Ama dediğim gibi, bu zaten WinAPI kullanıyor:
Teşekkür ederim! Ve bir gülen yüzü nasıl üzebilirsin?)
Peki, Ctrl+E tuşlarına basarak taklit ederek Autotrade düğmesine basabilir/basmayı kaldırabilirsiniz. Ama dediğim gibi, bu zaten WinAPI kullanıyor:
Aynen ama bence pankek çok basit bir yöntem ama ben bu kütüphaneyi tamamen unutmuşum. Teşekkürler, şimdi istediğimizi yapacağız
Dikdörtgenler çizen bir MQL4 betiği (aşağıdaki kod) yaptım (aşağıdaki şekil), ama görev bu değil. Kesikli bir STYLE_DOT çizgisi için, yalnızca genişlik 1 çalışır, 2 veya daha fazla ise düz bir çizgi çizer. Söyle bana, nerede hatam var yoksa bizden bir şey mi saklıyorlar?
Dikdörtgenler çizen bir MQL4 betiği (aşağıdaki kod) yaptım (aşağıdaki şekil), ama görev bu değil. Kesikli bir STYLE_DOT çizgisi için, yalnızca genişlik 1 çalışır, 2 veya daha fazla ise düz bir çizgi çizer. Söyle bana, nerede hatam var yoksa bizden bir şey mi saklıyorlar?
Stili ve kalınlığı manuel olarak çizmeyi ve değiştirmeyi denediniz mi? Ve bu deneylerden nasıl bir sonuç çıkarılabilir?
Cevabı buldum. Burada "Çizgi stili. Yalnızca çizgi genişliği 0 veya 1 olduğunda kullanılır" yazıyor. Görünüşe göre, 2 veya daha fazla kalınlıkta, katı bir çizgi hariç diğer çizgilerin çalışmamasının nedeni burada yatıyor.
Cevabı buldum. "Çizgi stili. Yalnızca çizgi ağırlığı 0 veya 1 olduğunda kullanılır" diyor. Görünüşe göre, 2 veya daha fazla kalınlıkta, katı bir çizgi hariç diğer çizgilerin çalışmamasının nedeni burada yatıyor.
Oldukça doğru. Ayrıca bu tırmık üzerine bastı.
Beyler, söyleyin bana, Kim'den son pozisyonun açılış bar numarasını veya -1'i döndüren bir fonksiyon aldım.
bu işlevi çağırdı ve koşulu yazdı
sonuç olarak bir emir açılıyor ama bara bir stop ile vurulursa ve poz girmek için yukarıdaki koşul yine de kaydedilirse anlaşma bu barda açılır, Print üzerinden fonksiyonun -1 döndürdüğüne baktım , ilk başta hiç emir olmadığı için düşündüm, ama sonra emirler ortaya çıktı ve hepsi aynı, durduktan sonra aynı barda, anlaşma açılıyor, yardım et, neyi yanlış yaptım?