Özellikle ClosePosBySizeProfitInCurrency() işlevinin çalışmasını göstermek için bir Uzman Danışman yazdım e-CloseByProfitPosInCurrency , yalnızca mevduat para birimindeki karı belirli bir değeri aşan pozisyonları kapatan . Expert Advisor hem tek bir çizelgeye hem de birkaç çizelgeye kurulabilir. Danışmanın harici parametrelerini kullanarak kapatılan pozisyonların listesini belirleyebilirsiniz:
sembol ="0" - Ticaret aracı. Aşağıdaki değerlere izin verilir: "0" - herhangi bir alım satım aracı, "" - yalnızca mevcut enstrüman ve piyasa saatinden herhangi bir değer (EURUSD, GBPUSD, vb.).
İşlem =-1 - Ticaret işlemi. Geçerli değerler: -1 - herhangi bir ticari işlem, 0 - OP_BUY, 1 - OP_SELL.
Igor, belirli bir kayba ulaşıldığında, ClosePosBySizeProfitInCurrency() işlevine benzer şekilde kârsız pozisyonları kapatan bir işlevin var mı? (Ya da belki, kâr ve zararın kapanışını ayarlayabileceğiniz birleşik.)
Anladığım kadarıyla, OrderProfit () için pr parametrelerinieksi işaretiyle ayarlayabilirsiniz ve aradığımız şeyi elde ederiz.
Ancak puan cinsinden (ve mevduat para biriminde değil) eşiği belirlemek mümkün müdür? Evet ise, nasıl? (kar al ve zararı durdur teklif etmeyin)
rid писал (а): Igor, belirli bir kayba ulaşıldığında, ClosePosBySizeProfitInCurrency() işlevine benzer şekilde kârsız pozisyonları kapatan bir işlevin var mı? (Ya da belki birleştirilmiş, burada kâr ve zararı kapatabilirsiniz.)
Hayır, henüz bu özelliğe sahip değilim. Ancak, ClosePosBySizeProfitInCurrency() öğesini yeniden oluşturabilirsiniz:
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 25.04.2008 |//| Описание : Закрытие тех позиций, у которых убыток в валюте депозита |//| превысил некоторое значение |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| pr - профит/убыток |//+----------------------------------------------------------------------------+voidClosePosBySizeLossInCurrency(stringsy="", intop=-1, intmn=-1, doublepr=0){inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
for(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderProfit()+OrderSwap()<-MathAbs(pr))ClosePosBySelect();
}}}}}}
Kaybın pozitif (kayıp) ve negatif (eksi işaretli kazanç) sayı olarak aktarılabilmesi için yaptım.
kurtulmak yazdı: Anladığım kadarıyla, OrderProfit () için pr parametrelerinieksi işaretiyle ayarlayabilirsiniz ve aradığımız şeyi elde ederiz.
Ancak puan cinsinden (ve mevduat para biriminde değil) eşiği belirlemek mümkün müdür? Evet ise, nasıl? (kar al ve zararı durdur teklif etmeyin)
Bu işlev, parametreleri belirtilen değerleri karşılayan konumları kapatır:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. NULL, geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Закрытие позиций по рыночной цене |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+voidClosePositions(stringsy="", intop=-1, intmn=-1){inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
for(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn)ClosePosBySelect();
}}}}}
Lütfen yardım et!!! 4 gündür ilk bakışta basit bir iş için kafa yoruyorum. CCİ değeri 100'ün üzerinde ise kayıt olmak, değer -100'ün altına düşene kadar alış pozisyonu açmak , -100'ün altına düştüğünde 100'ün üzerine çıkana kadar satış açmak gerekir.
Bu işlev, pozisyonları belirli bir sırayla, yani önce karlı, sonra geri kalan her şeyi kapatır. Daha doğru bir kapalı pozisyon seçimi, harici parametreler tarafından belirlenir:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. NULL, geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - Ticaret işlemi, pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Закрытие позиций по рыночной цене сначала прибыльных |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+voidClosePosFirstProfit(stringsy="", intop=-1, intmn=-1){inti, k=OrdersTotal();
if(sy=="0")sy=Symbol();
// Сначала закрываем прибыльные позицииfor(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(OrderProfit()+OrderSwap()>0)ClosePosBySelect();
}}}}}// Потом все остальныеk=OrdersTotal();
for(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn)ClosePosBySelect();
}}}}}
Bu fonksiyon, mevduat para biriminde maksimum pozitif kârla bir pozisyonu kapatır. Yani şu anda her birinin karı -34, 15, 73, -90, 41 olan beş pozisyondan mevduat para biriminde 73 birim kârlı bir pozisyon kapatılacaktır. Daha doğru bir kapalı pozisyon seçimi, harici parametreler tarafından belirlenir:
sy - Araç adı. Bu parametreyi ayarlarsanız, fonksiyon sadece belirtilen enstrümanın pozisyonlarını kontrol edecektir. NULL, geçerli araç anlamına gelir ve "" (varsayılan) herhangi bir araç anlamına gelir.
op - Ticaret işlemi , pozisyon türü. Geçerli değerler: OP_BUY, OP_SELL veya -1. Varsayılan değer -1, herhangi bir konum anlamına gelir.
mn - Konum Kimliği (MagicNumber). Varsayılan değer -1 - herhangi bir büyü.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Закрытие одной позиции с максимальным положительным профитом |//| в валюте депозита |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+voidClosePosWithMaxProfitInCurrency(stringsy="", intop=-1, intmn=-1){doublepr=0;
inti, k=OrdersTotal(), np=-1;
if(sy=="0")sy=Symbol();
for(i=k-1; i>=0; i--){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(mn<0 || OrderMagicNumber()==mn){if(pr<OrderProfit()+OrderSwap()){pr=OrderProfit()+OrderSwap();
np=i;
}}}}}if(np>=0){if(OrderSelect(np, SELECT_BY_POS, MODE_TRADES)){ClosePosBySelect();
}}}
B_Dima : CCİ değeri 100'ün üzerindeyse, değer -100'ün altına düşene kadar alış pozisyonu, -100'ün altına düştüğünde ise 100'ün üzerine çıkana kadar satış pozisyonu açın.
Dima, sana şu işlevi sunabilirim:
intCCI_period=14;
intApplied_Price=PRICE_CLOSE;
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 28.24.2008 |//| Описание : Возвращает торговый сигнал: |//| 1 - покупай |//| 0 - сиди, кури бамбук |//| -1 - продавай |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| tf - таймфрейм ( 0 - текущий таймфрейм) |//| nb - номер бара ( 0 - текущий номер бара) |//+----------------------------------------------------------------------------+intGetTradeSignal(stringsy="", inttf=0, intnb=0){if(sy=="" || sy=="0")sy=Symbol();
doublecci0=iCCI(sy, tf, CCI_period, Applied_Price, nb);
doublecci1=iCCI(sy, tf, CCI_period, Applied_Price, nb+1);
intbs=0;
if(cci1<=+100 && cci0>+100)bs=+1;
if(cci1>=-100 && cci0<-100)bs=-1;
return(bs);
}
Bu fonksiyon satın alırken 1, satarken -1 döndürür. Satın alma / satış koşulları isteklerinize karşılık gelir. Şimdi her kene üzerinde aşağıdakileri yapmanız yeterlidir:
1. GetTradeSignal() işlevinin değerini alın.
2. Alınan değer ==0 ise, hiçbir şey yapmayın.
3. Alınan değer >0 ise tüm satışları kapatın ve satın alın.
4. Alınan değer <0 ise, tüm alımları kapatın ve satın.
Öte yandan, araç çubuğundaki "Uzman Danışmanlar" düğmesine basarak Expert Advisor'ı durdurmayı mümkün kılar.
Prensip olarak, bir seçenek olarak, sanırım, teşekkürler. danışmandan ayrılmak için çok fazla parametre yok, zor olmayacak
ClosePosBySizeProfitInCurrency() işlevini kullanma örneği
Özellikle ClosePosBySizeProfitInCurrency() işlevinin çalışmasını göstermek için bir Uzman Danışman yazdım
e-CloseByProfitPosInCurrency , yalnızca mevduat para birimindeki karı belirli bir değeri aşan pozisyonları kapatan . Expert Advisor hem tek bir çizelgeye hem de birkaç çizelgeye kurulabilir. Danışmanın harici parametrelerini kullanarak kapatılan pozisyonların listesini belirleyebilirsiniz:
Hepinize iyi günler.
Igor, belirli bir kayba ulaşıldığında, ClosePosBySizeProfitInCurrency() işlevine benzer şekilde kârsız pozisyonları kapatan bir işlevin var mı? (Ya da belki, kâr ve zararın kapanışını ayarlayabileceğiniz birleşik.)
Anladığım kadarıyla, OrderProfit () için pr parametrelerini eksi işaretiyle ayarlayabilirsiniz ve aradığımız şeyi elde ederiz.
Ancak puan cinsinden (ve mevduat para biriminde değil) eşiği belirlemek mümkün müdür? Evet ise, nasıl? (kar al ve zararı durdur teklif etmeyin)
Igor, belirli bir kayba ulaşıldığında, ClosePosBySizeProfitInCurrency() işlevine benzer şekilde kârsız pozisyonları kapatan bir işlevin var mı? (Ya da belki birleştirilmiş, burada kâr ve zararı kapatabilirsiniz.)
Hayır, henüz bu özelliğe sahip değilim. Ancak, ClosePosBySizeProfitInCurrency() öğesini yeniden oluşturabilirsiniz:
Kaybın pozitif (kayıp) ve negatif (eksi işaretli kazanç) sayı olarak aktarılabilmesi için yaptım.
Anladığım kadarıyla, OrderProfit () için pr parametrelerini eksi işaretiyle ayarlayabilirsiniz ve aradığımız şeyi elde ederiz.
Ancak puan cinsinden (ve mevduat para biriminde değil) eşiği belirlemek mümkün müdür? Evet ise, nasıl? (kar al ve zararı durdur teklif etmeyin)
e-CloseByProfit EA koduna bakın.
ClosePositions() işlevi.
Bu işlev, parametreleri belirtilen değerleri karşılayan konumları kapatır:
ClosePosFirstProfit() işlevi.
Bu işlev, pozisyonları belirli bir sırayla, yani önce karlı, sonra geri kalan her şeyi kapatır. Daha doğru bir kapalı pozisyon seçimi, harici parametreler tarafından belirlenir:
ClosePosWithMaxProfitInCurrency() işlevi.
Bu fonksiyon, mevduat para biriminde maksimum pozitif kârla bir pozisyonu kapatır. Yani şu anda her birinin karı -34, 15, 73, -90, 41 olan beş pozisyondan mevduat para biriminde 73 birim kârlı bir pozisyon kapatılacaktır. Daha doğru bir kapalı pozisyon seçimi, harici parametreler tarafından belirlenir:
CCİ değeri 100'ün üzerindeyse, değer -100'ün altına düşene kadar alış pozisyonu, -100'ün altına düştüğünde ise 100'ün üzerine çıkana kadar satış pozisyonu açın.
Dima, sana şu işlevi sunabilirim:
Bu fonksiyon satın alırken 1, satarken -1 döndürür. Satın alma / satış koşulları isteklerinize karşılık gelir. Şimdi her kene üzerinde aşağıdakileri yapmanız yeterlidir:
1. GetTradeSignal() işlevinin değerini alın.
2. Alınan değer ==0 ise, hiçbir şey yapmayın.
3. Alınan değer >0 ise tüm satışları kapatın ve satın alın.
4. Alınan değer <0 ise, tüm alımları kapatın ve satın.