Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
( Bu yorumu yazmaya çalışmadan önce sanırım çözüm bulmak için çok araştırdım evet benzer konuları buldum ama bu soruna çözüm bulamadım )
Bana Zararı Durdur'u pip olarak gösteren Satış Emri için aşağıdaki kodu kullanıyorum, Zarar Durdur pozitife dönene kadar bana doğru değeri gösteriyor.
Bu yüzden, bu sorunu çözmek için nasıl bir şeyler deneyebileceğime dair hiçbir fikrim yok.
Herhangi bir iyi yorum, lütfen daha iyi olur.
( not: Şu an için Trailing Stop kullanmıyorum. Ayrıca aşağıdaki kod sadece Bilgi Güncellemeleri için, OrderSend() veya benzeri şeyler için değil. )
{
riskinpips=change_to_pips( OrderStopLoss ()- OrderOpenPrice ());
}
Print ( "stop loss in pips" , DoubleToString (riskinpips, 2 ));
Şimdiden teşekkürler.
(not: sorunumu açıklamak için fotoğraf düzenleme programı tarafından yapılan ekran görüntüsü etiketleri)Size sonucu veren en yüksek değer eksi en düşük değerdir, böylece hangisinin en yüksek olduğunu kontrol edebilirsiniz.
{
// orderstoploss - orderopenprice
}
else if ( OrderOpenPrice ()> OrderStopLoss ())
{
// orderopenprice - orderstoploss
}
Size sonucu veren en yüksek değer eksi en düşük değerdir, böylece hangisinin en yüksek olduğunu kontrol edebilirsiniz.
{
// orderstoploss - orderopenprice
}
else if ( OrderOpenPrice ()> OrderStopLoss ())
{
// orderopenprice - orderstoploss
}
Bunu hiç umursamadığım için kendi kendime gülüyorum. Bunun bana yardımcı olabileceğini düşünüyorum. Yakında deneyeceğim.
Çok teşekkürler Bay Marco
#Kar Para Birimi Hesapla - Kapalı
Şimdiye kadar mükemmel çalışıyor.
Çok teşekkürler @Marco vd Heijden ve @whroeder1
#Zaman - Açık
EA'm için Zaman / Saat hakkında araştırma yapmaya başladığımdan beri. Yazarların bunun için göstergede start() JUST kullandığını görüyorum.
EA'mda OnTimer() ve OnTick() kullanıyorum, start() kullanmak istemiyorum.
Bu yüzden, Zaman ve Saat işlevi için hangi özel işlevin daha iyi olacağından emin olmam/öğrenmem gerekiyor?
10 saat sonra bu konu hakkında araştırmaya devam edeceğim.
(not: Mql5.com Codebase sayfasından zaten birkaç Zaman ve Saat göstergesi buldum - ancak kopyalayıp yapıştırmayı sevmiyorum)
Herhangi bir iyi yorum, forum paylaşımı ve bağlantılar ve başka bir şey benim için daha iyi olurdu.
Şimdiden teşekkürler.
Başlatma işlevi, yalnızca komut dosyalarında OnStart ile değiştirilir. Expert Advisors ve göstergelerde sırasıyla OnTick ve OnCalculate olarak yeniden adlandırılmalıdır. Bir mql5 program işlemi sırasında yürütülecek kod şu üç işlevde bulunmalıdır:
Bakınız: https://www.mql5.com/en/docs/migration
Başlatma işlevi, yalnızca komut dosyalarında OnStart ile değiştirilir. Expert Advisors ve göstergelerde sırasıyla OnTick ve OnCalculate olarak yeniden adlandırılmalıdır. Bir mql5 program işlemi sırasında yürütülecek kod şu üç işlevde bulunmalıdır:
#Zaman - Açık
EA için Zaman / Saat hakkında araştırma yapmaya başladığımdan beri. Yazarların bunun için göstergede start() JUST kullandığını görüyorum.
EA'mda OnTimer() ve OnTick() kullanıyorum, start() kullanmak istemiyorum.
Bu yüzden, Zaman ve Saat işlevi için hangi özel işlevin daha iyi olacağından emin olmam/öğrenmem gerekiyor?
10 saat sonra bu konu hakkında araştırmaya devam edeceğim.
(not: Mql5.com Codebase sayfasından zaten birkaç Zaman ve Saat göstergesi buldum - ancak kopyalayıp yapıştırmayı sevmiyorum)
Herhangi bir iyi yorum, forum paylaşımı ve bağlantılar ve başka bir şey benim için daha iyi olurdu.
Şimdiden teşekkürler.
OnTimer()'ı kullanın.
TimeLocal() kullanmak daha iyi bir görünüm sağlar, ancak aracı saat dilimine eşitlenmez.
TimeCurrent() kullanımı aracınızla eşitlenir, ancak kenelerin ne zaman geldiğine bağlı olarak saniyeler sonra "atlayabilir". Bu örnek sorunu vurgulayacaktır:
int OnInit ()
{
EventSetTimer ( 1 );
return ( INIT_SUCCEEDED );
}
void OnTimer ()
{
Comment ( StringFormat ( "%s - Local\n%s - Broker" , TimeToString ( TimeLocal (), TIME_SECONDS ), TimeToString ( TimeCurrent (), TIME_SECONDS )));
}
#Zaman - Kapalı
OnTimer()'ı kullanın.
TimeLocal() kullanmak daha iyi bir görünüm sağlar, ancak komisyoncu saat dilimine eşitlenmez.
TimeCurrent() kullanımı aracınızla eşitlenir, ancak kenelerin ne zaman geldiğine bağlı olarak saniyeler sonra "atlayabilir". Bu örnek sorunu vurgulayacaktır:
int OnInit ()
{
EventSetTimer ( 1 );
return ( INIT_SUCCEEDED );
}
void OnTimer ()
{
Comment ( StringFormat ( "%s - Local\n%s - Broker" , TimeToString ( TimeLocal (), TIME_SECONDS ), TimeToString ( TimeCurrent (), TIME_SECONDS )));
}
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
uzman danışman - çeşitli sorular
dürüst_knave , 2016.11.30 01:28
IMHO, tüm lot hesaplamalarınızı OnChartEvent() ve _lotCalc() arasında bölmek yerine bir arada tutarsanız daha iyi olur. Min / maks / adımı kontrol eden ve artırma / eksiltmeyi yapan bir fonksiyon.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger ( 0 , sparam , OBJPROP_STATE , false );
_lotSize = fmax (_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf ( " | Lot: %.2f " , _lotSize );
return ;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP );
//---
}
#Lot Adımı - Yeniden Aç
@honest_knave - Parti Büyüklüğü ve Parti Adımı konusundaki en büyük yardımınız için teşekkürler.
Bu yüzden, kodun bu bölümünü " Lot Size >= ( Lot Step * 100 ) " o Lot Step " Lot Step * 100 " arttığında iyileştirmem gerekiyor.
if (sparam==lotbuttonplus)
{
if (lotsize>=(lotstep* 100 ))
{
lotstep=lotstep* 100 ;
Print ( "lot step: " ,lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue* 10 );
lotsize= fmin (lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep* 10 : lotstep));
// global variable
infoupdate();
printf ( "Lot: %.2f " ,lotsize);
ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
return ;
}
Şimdiden teşekkürler.