Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 722
Alım-satım fırsatlarını kaçırıyorsunuz:
- Ücretsiz alım-satım 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
Evet, gerçekten... Böyle bir komisyoncuyu nerede bulabilirim... Bağlantıyı paylaşır mısınız?
günün iyi zamanı,
Soru:
Lütfen bana bekleyen siparişi neden satın alma işlemine koyamadığımı söyleyin:
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(ofset)*nokta;
ofset = 1'de düşüyor hata :
başarısız satın alma durağı 0.10 AUDNZD.m, 1.03748'den [Geçersiz fiyat] , t . e . biraz seviye fiyatlar ( en benim durum )
Ne zaman, hemen ardından “infaz emri” verilirken
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
her şey yolunda gidiyor (yani sipariş verildi):
sipariş gerçekleştirildi 0,10 1,03747'den satın alın [#2 1,03747'den 0,10 AUDNZD.m satın alın]
Bekleyen bir emir ( 1.03748 ) neden kabul edilmiyor ? 1.03747'de - ayarlanmış ve 1.03748'de - küçük bir değer mi? (sonuçta , SYMBOL_ASK spread'i hesaba katar ve ofset - puan olarak sipariş vermek için mevcut fiyattan ofset 1 artar)
Ancak offset= 100 ise: bekleyen emir BUY_STOP fiyatı = 1.03847 – zaten çalışıyor
Teşekkür ederim.günün iyi zamanı,
Soru:
Lütfen bana bekleyen siparişi neden satın alma işlemine koyamadığımı söyleyin:
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+(ofset)*nokta;
ofset = 1'de düşüyor hata :
başarısız satın alma durağı 0.10 AUDNZD.m, 1.03748'den [Geçersiz fiyat] , yani küçük bir fiyat seviyesi (benim durumumda)
Ne zaman, hemen ardından “infaz emri” verilirken
request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK)
her şey yolunda gidiyor (yani sipariş verildi):
sipariş gerçekleştirildi 0,10 1,03747'den satın alın [#2 1,03747'den 0,10 AUDNZD.m satın alın]
Bekleyen bir emir ( 1.03748 ) neden kabul edilmiyor ? 1.03747'de - ayarlanmış ve 1.03748'de - küçük bir değer mi?
Ama eğer offset= 100 : bekleyen emir BUY_STOP fiyatı = 1.03847 – zaten çalışıyor
Teşekkür ederim.Kendi sorunuzu kendiniz cevapladınız.
Böyle bir durma seviyesi parametresi vardır - mevcut fiyattan bekleyen bir emir verme fiyatına gereken minimum mesafe - her enstrümanın kendi değeri vardır ve ticaret koşullarında belirlenir
Вы же сами и ответили на свой вопрос.
Есть такой параметр stoplevel -- минимально необходимое расстояние от текущей цены до цены установки отложенного ордера -- для каждого инструмента своё значение и задаётся в торговых условиях
O zaman aşağıdakiler doğru olacaktır:
fiyat =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)*nokta
Bununla birlikte, "... cari fiyattan" yazdıysanız, yayılmanın bununla ne ilgisi var? Hangi SYMBOL_ASK dahildir (çünkü SYMBOL_ASK = açılış fiyatı + spread).
Size yardımcı olması için bir örnek ekledim...
Elbette, örnek yardımcı oldu. Teşekkür ederim.
Şimdi böyle bir soru.
Partiyi arttırırken, bir noktada neredeyse hiç ücretsiz fon olmaz ve onu artan bir lotla açmanız gerekir.
Yani, FreeMargin'in izin verdiği şekilde maksimum lot ile girin.
Böyle bir koşul nasıl yazılır : Hesaplanmış bir lot ile bir pozisyon açmak için yeterli fon yoksa, fonksiyon bir pozisyon açmak için mümkün olan maksimum lotu döndürmelidir.
{
double Lot=FirstLot;
if (DoublingCount<= 0 ) return Lot;
double MaxLot= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MAX );
double MainLot= SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN );
if (Lot<MainLot)Lot=MainLot;
if (Lot>MaxLot)Lot=MaxLot;
double lt1=Lot;
HistorySelect ( 0 , TimeCurrent ());
if ( HistoryOrdersTotal ()== 0 ) return (Lot);
double cl= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 1 ), ORDER_PRICE_OPEN );
double op= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_PRICE_OPEN );
long typeor= HistoryOrderGetInteger ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_TYPE );
if (typeor== ORDER_TYPE_BUY )
{
if (op>cl)
{
if (ud<DoublingCount)
{
lt1= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_VOLUME_INITIAL )*_C_;
ud++;
}
else ud= 0 ;
}
else ud= 0 ;
}
if (typeor== ORDER_TYPE_SELL )
{
if (cl>op)
{
if (ud<DoublingCount)
{
lt1= HistoryOrderGetDouble ( HistoryOrderGetTicket ( HistoryOrdersTotal ()- 2 ), ORDER_VOLUME_INITIAL )*_C_;
ud++;
}
else ud= 0 ;
}
else ud= 0 ;
}
if (lt1>MaxLot)lt1=MaxLot;
lt1=LotCheck(lt1);
return (lt1);
}
//+------------------------------------------------------------------+}
Elbette, örnek yardımcı oldu. Teşekkür ederim.
Şimdi böyle bir soru.
Partiyi arttırırken, bir noktada neredeyse hiç ücretsiz fon olmaz ve onu artan bir lotla açmanız gerekir.
Yani, FreeMargin'in izin verdiği şekilde maksimum lot ile girin.
Böyle bir koşul nasıl yazılır : Hesaplanmış bir lot ile bir pozisyon açmak için yeterli fon yoksa, fonksiyon bir pozisyon açmak için mümkün olan maksimum lotu döndürmelidir.
double Mgn,Lot=0,BID,ASK;
BID=SymbolInfoDouble(_Symbol,SYMBOL_BID);
ASK=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
if ( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 1 ,ASK,Mgn)== true )Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
Marina, belki öyle?
Biri SATIŞ açmak için, diğeri SATIN AL açmak için olmak üzere iki hesaplama seçeneği uygularsınız.
if ( OrderCalcMargin ( ORDER_TYPE_BUY , _Symbol , 1 ,ASK,Mgn)== true )Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
if(OrderCalcMargin(ORDER_TYPE_SELL,_Symbol,1,BID,Mgn)==true)Lot= AccountInfoDouble ( ACCOUNT_MARGIN_FREE )/Mgn;
Hayır, öyle değil.
Sadece mümkün olan maksimum lotu hesaplamak değil, aynı zamanda izin verilen minimum lot için her şeyi kontrol etmek gerekir, çünkü minimum lotun 0.01 olduğu ve marjın sadece 0.009 açmanıza izin verdiği bir durum meydana gelebilir, sonra işkence yaparsınız. asla kabul edilmeyecek istekleri olan sunucu, ancak sizin için önlemler kabul edilebilir)
Hayır, öyle değil.
Sadece mümkün olan maksimum lotu hesaplamak değil, aynı zamanda izin verilen minimum lot için her şeyi kontrol etmek gerekir, çünkü minimum lotun 0.01 olduğu ve marjın sadece 0.009 açmanıza izin verdiği bir durum meydana gelebilir, sonra işkence yaparsınız. asla kabul edilmeyecek istekleri olan sunucu, ancak sizin için önlemler kabul edilebilir)
Tam kodu olması gerektiği gibi yazın, peki, aynı anda bir göz atacağım ....?
Artık her zaman sizden öğreneceğim ve cevapların eksiksiz olması için sizinle ilgileneceğim.
Bir zamanlar teknik şef olarak çalıştım, merak etmeyin her şey yoluna girecek!
Birlikte bir ekibiz!
Elbette, örnek yardımcı oldu. Teşekkür ederim.
Şimdi böyle bir soru.
Partiyi arttırırken, bir noktada neredeyse hiç ücretsiz fon olmaz ve onu artan bir lotla açmanız gerekir.
Yani, FreeMargin'in izin verdiği şekilde maksimum lot ile girin.
Böyle bir koşul nasıl yazılır : Hesaplanmış bir lot ile bir pozisyon açmak için yeterli fon yoksa, fonksiyon bir pozisyon açmak için mümkün olan maksimum lotu döndürmelidir.