MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 56
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
Geliştirmeye devam ediyorum:
koşul doğruysa
açık sipariş 1
fiyat olması gereken yere gitti mi gitmedi mi
açık sipariş2
LastLot= sipariş 2 (veya daha fazla)
LastPrice= order2 (veya daha yüksek)
fiyat doğru giderse ya da gitmezse...
LastLot= sipariş 3 (veya daha fazla)
LastPrice= sipariş 3 (veya üstü)
sorun şu ki - son (veya değil) emir her zaman zararı durdur ve al arasında olacak, bu yüzden emrin kendisi askıda kalacağı için geri kalanı kapatıldığında değeri sıfırlanmayacak. Bilinmeyen bir miktarda geri kalanıyla nasıl bağlanır.
Sonuncuyu veya sondan bir öncekini diğerlerine bağlama mekanizması, sayıları sayılarla birlikte değiştiği için etkisiz olduğu ortaya çıktı.
sonuç "bu serinin emirlerinden biri kapanırsa diğerlerini kapat" gibi bir şey olmalıdır.
seri geri sayım - mevcut yönün ilk sırası (başka bir tür açmaz) burada veya bazı ek tanımlayıcılar veya diğer bağlama yöntemleri. Anahtar - koşullara göre ilk sipariş açılır, geri kalanı yardımcı doldurmadır.
Düşüncesi olan var mı?
Geliştirmeye devam ediyorum:
koşul doğruysa
açık sipariş 1
fiyat olması gereken yere gitti mi gitmedi mi
açık sipariş2
LastLot= sipariş 2 (veya daha fazla)
LastPrice= order2 (veya daha yüksek)
fiyat doğru giderse ya da gitmezse...
LastLot= sipariş 3 (veya daha fazla)
LastPrice= sipariş 3 (veya üstü)
sorun şu ki - son (veya değil) emir her zaman zararı durdur ve al arasında olacak, bu yüzden emrin kendisi askıda kalacağı için geri kalanı kapatıldığında değeri sıfırlanmayacak. Bilinmeyen bir miktarda geri kalanıyla nasıl bağlanır.
Sonuncuyu veya sondan bir öncekini diğerlerine bağlama mekanizması, sayıları sayılarla birlikte değiştiği için etkisiz olduğu ortaya çıktı.
sonuç "bu serinin emirlerinden biri kapanırsa diğerlerini kapat" gibi bir şey olmalıdır.
seri geri sayım - mevcut yönün ilk sırası (başka bir tür açmaz) burada veya bazı ek tanımlayıcılar veya diğer bağlama yöntemleri. Anahtar - koşullara göre ilk sipariş açılır, geri kalanı yardımcı doldurmadır.
Düşüncesi olan var mı?
Kaotik, anlaşılmaz. Düşüncelerinizi daha net ifade etmeye çalışın.
İşte burada: " fiyat olması gereken yere gittiyse veya gitmediyse - açık emir2 " - her durumda " açık emir2 " nasıl anlaşılır?
Ve ayrıca böyle "veya" sadece daha fazlası ...
Ve böylece " Bilinmeyen bir miktarla geri kalanıyla nasıl bağlantı kurulur " gibi sorular olmaz - bu yüzden önce miktarı bulmanız gerekir.
Kaotik, anlaşılmaz. Düşüncelerinizi daha net ifade etmeye çalışın.
İşte burada: " fiyat olması gereken yere gittiyse veya gitmediyse - açık emir2 " - her durumda " açık emir2 " nasıl anlaşılır?
Ve ayrıca böyle "veya" sadece daha fazlası ...
Ve böylece " Bilinmeyen bir miktarla geri kalanıyla nasıl bağlantı kurulur " gibi sorular olmaz - bu yüzden önce miktarı bulmanız gerekir.
sayılarla tamam
döviz kuru EURUSD=1 .10000
mevcut sipariş için TOR'a göre bir satın alma emri açma komutu verildi (zaten yazılmış)
EURUSD=1.10200 satın alma işlemine eklenirse (zaten yazılmıştır)
EURUSD=1.09800 satın alma işlemine eklenirse (zaten yazılmıştır)
ve benzeri 200'lük artışlarla
bu emirlerden herhangi biri kapanırsa (durur ve alımlar durur, ancak hiç olmaz)
tüm ızgarayı kapat
ızgarayı tanımlamanın bir yolunu arıyorumsayılarla tamam
döviz kuru EURUSD = 1.10000
mevcut sipariş için TOR'a göre bir satın alma emri açma komutu verildi (zaten yazılmış)
EURUSD=1.10200 satın alma işlemine eklenirse (zaten yazılmıştır)
EURUSD=1.09800 satın alma işlemine eklenirse (zaten yazılmıştır)
ve benzeri 200'lük artışlarla
Bu emirlerden herhangi biri kapanırsa (durur ve alımlar durur)
tüm ızgarayı kapat
ızgarayı tanımlamanın bir yolunu arıyorumSipariş numarası ile yorumlar eklenebilir. Ve eğer tüm siparişler aynı türden ise, o zaman sadece onları sayın ve sayıyı düzeltin.
Yorumları düşündüm, ancak incelemelere bakılırsa, şef onları yenmez olarak görüyor ve ya siliyor ya da kendi başına değiştiriyor.
ve yeniden hesaplama hakkında, yani bir sonrakini eklerken miktarı sayıp düzeltmem gerekiyor mu?
ve yeniden hesaplama hakkında, yani bir sonrakini eklerken miktarı sayıp düzeltmem gerekiyor mu?
Evet. Ve son seferden beri sayı azaldıysa, kalanların hepsini kapatın.
Ayrıca geçmişte kapatılan siparişleri de izleyebilirsiniz. Ve belirtilen özelliklere karşılık gelen yeni kapalı bir sipariş göründüğünde, seriyi kapatın.
Yine de TP/SL'yi sırayla ayarlayamazsınız, ancak tüm seri için EA'daki toplam TP/SL'yi hesaplayabilirsiniz. Ve seriyi kapatmak için onlara. Avantajlar - DC durma seviyelerini görmez, TP veya SL bir siparişte çalıştıysa, serinin geri kalanını bulma sorunu ortadan kalkar.double volume( string symbol, double risk, double sl)
{
double lot= 0.0 ;
double procent= 0.0 ;
double balans= 0.0 ;
double tc = SymbolInfoDouble (symbol, SYMBOL_TRADE_CONTRACT_SIZE );
double tv = SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_VALUE );
double ts= SymbolInfoDouble (symbol, SYMBOL_TRADE_TICK_SIZE );
double point= SymbolInfoDouble (symbol, SYMBOL_POINT );
if (Type_Balanse==Balance) balans= AccountInfoDouble ( ACCOUNT_BALANCE );
if (Type_Balanse==Equity) balans= AccountInfoDouble ( ACCOUNT_EQUITY );
if (Type_Balanse==FreeMargin) balans= AccountInfoDouble ( ACCOUNT_FREEMARGIN );
procent=(balans/ 100.0 )*risk;
switch (( int ) MarketInfo (symbol, MODE_PROFITCALCMODE ))
{
case 0 : if (sl!= 0 && tv!= 0 ) lot=procent/(sl*tv); break ;
case 1 : if (sl!= 0 && point!= 0 && tc!= 0 ) lot=procent/(sl*point*tc); break ;
case 2 : if (sl!= 0 && point!= 0 && tv!= 0 && ts!= 0 ) lot=procent/(sl*point*(tv/ts)); break ;
}
return (NormalizeVolume(symbol,lot));
}
Peki, basit bir dille soracağım, danışmana nasıl kayıt olunur kaldıraca bağlı olarak lotun otomatik hesaplanması.. Kaldıraç 1:50 depozito 3000 diyelim..
Şu şekilde deneyin:
{
Comment ( cLot( 100 ) );
}
//===============================================================================================
//------------------------------------ Расчет лота по риску ------------------------------------+
//===============================================================================================
double cLot( double Percent= 0 ) {
double Free= AccountFreeMargin (),
One_Lot= MarketInfo ( _Symbol , MODE_MARGINREQUIRED ),
Min_Lot= MarketInfo ( _Symbol , MODE_MINLOT ),
cStep= MarketInfo ( _Symbol , MODE_LOTSTEP ),
Lots_New= 0 ;
if (Percent > 100 ) {
Percent = 100 ;
}
if (Percent == 0 ) {
Lots_New = 0 ;
return ( 0 );
} else {
Lots_New = MathFloor (Free*Percent/ 100 /One_Lot/cStep)*cStep;
}
if (Lots_New < Min_Lot) {
Lots_New = Min_Lot;
}
if (Lots_New*One_Lot > Free) {
return ( 0 );
}
return ( NormalizeDouble (Lots_New,LotDigit()));
}
//===============================================================================================
//-------------------- Кол-во знаков после точки в значении торгового лота ---------------------+
//===============================================================================================
int LotDigit(){
double lotStep = MarketInfo ( _Symbol , MODE_LOTSTEP );
return (( int ) MathCeil ( MathAbs ( MathLog (lotStep)/ MathLog ( 10 ))));
}