[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 268

 

extern string AlliesO1 = "GBPUSD"; - валюта

string AlliesO[5]; - массив в котором хранятся валюты.



Так я проверяю нужно ли добавлять валюту в массив. (Изначально вместо валют нули, всего валют 5)

if (StringLen (AlliesO1)>2)
{
CountAlliesO++;
AlliesO [0] = AlliesO1;
}





Потом в цикле перебираю валюты и на каждой валюте открываю ордер.

for (int i=0;i<CountAlliesO;i++)

{
l_ticket_4 = OrderSend(AlliesO[i], OP_BUY, Lots, NormalizeDouble(Ask, Digits), l_slippage_8, iif(StopLoss == 0.0, 0, NormalizeDouble(Ask - StopLoss / MathPow(10, Digits), Digits)), iif(TakeProfit == 0.0, 0, NormalizeDouble(Ask +
TakeProfit / MathPow(10, Digits), Digits)), 0, Magic, 0, CLR_NONE);
Print ("Ticket " + Allies[i] + ": " + l_ticket_4);
}



İşte çıktıları:

22:05:25 RSI_Valut_Test2 EURUSD,H1: CountAlliesO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: CountEnemyO: 2
22:05:25 RSI_Valut_Test2 EURUSD,H1: Müttefikler: GBPUSD // - Döngüde MüttefiklerO[i] yazdırıyorum.
22:05:25 RSI_Valut_Test2 EURUSD,H1: Müttefikler: GBPUSD
22:05:25 RSI_Valut_Test2 EURUSD,H1: Düşman: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: Düşman: USDCHF
22:05:25 RSI_Valut_Test2 EURUSD,H1: Bilet USDCHF: -1

22:05:25 RSI_Valut_Test2: OrderSend işlevi için sembol adı bir dize olmalıdır


Eh, genel olarak, böyle bir şey, tüm kodu veremem çünkü dağıtılmaması istendi ... Eh, orada hala bu verileri gösteren birkaç baskı var ... genel olarak, neden bunun bir dize olmadığını gösteriyor? her yerde bir dize olarak bildirilirse?


Lütfen yardım edin, şimdiden teşekkürler.

 

Herkese iyi akşamlar. Açtıktan birkaç bar sonra bir emri kapatma fonksiyonunu nasıl doğru bir şekilde yazacağımı ve bu miktarın optimize edilebilmesi için bana söyleyin. şimdiden teşekkürler.

 

CountBars - çubuk sayısı .

Bilet - sipariş numarası.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Her tikte koş, çubuk sayısından emin değilim, -1 veya +1 olabilir, çünkü Ofsetin nasıl değerlendirildiğini tam olarak bilmiyorum ... peki, M1'i kontrol etmek zor değil ...

Ne olmuş?

 
PODLIY16 :

CountBars - çubuk sayısı.

Bilet - sipariş numarası.

CloseAfterSomeBar (int CountBars, int Ticket)

{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES)
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (CountBars>=BarShift)
{
if (OrderType() = OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Her tikte koş, çubuk sayısından emin değilim, -1 veya +1 olabilir, çünkü Ofsetin nasıl değerlendirildiğini tam olarak bilmiyorum ... peki, M1'i kontrol etmek zor değil ...

Ne olmuş?

 
isaev-av :

belki. Ben bir programcı değilim. Şimdi deneyeceğim. Ana şey, TF üzerinde çalışmasıdır.
 
void CloseAfterSomeBar (int CountBars, int Ticket)
{
OrderSelect (Ticket, SELECT_BY_TICKET, MODE_TRADES);
datetime date = OrderOpenTime();
int BarShift = iBarShift (Symbol(), 0, date, false);
if (BarShift>=CountBars)
{
if (OrderType() == OP_BUY)
OrderClose(Ticket,OrderLots(),Bid, (Ask - Bid) / Point, CLR_NONE);
else
OrderClose(Ticket,OrderLots(),Ask, (Ask - Bid) / Point, CLR_NONE);
}
}


Bu doğru, istenilen bar açılır açılmaz emri kapatıyor mesela, ben sadece M1'de denedim emir dokuzuncu dakikada açıldı, 11:01'de kapandı.

 
MA'yı RSI veya Stokastik göstergelere nasıl uygulayacağımı söyle, yani. MA tablodan değil, göstergeden mi alındı?
 
Bir şey çalışmıyor. Belki birisi danışmanı düzeltebilir? Herkese iyi akşamlar. Açtıktan birkaç bar sonra bir emri kapatma fonksiyonunu nasıl doğru bir şekilde yazacağımı ve bu miktarın optimize edilebilmesi için bana söyleyin. şimdiden teşekkürler.
Dosyalar:
 

Bunun gibi deneyin, 2 yeni değişken var:


extern bool IfTrueThenCountBarWork = false; // - false olarak ayarlanırsa, bu işlev çalışmaz, çalışması için true olarak ayarlanması gerekir.

harici int CountBar = 0; // - kapatılacak çubuk sayısı . Barlar düşünüldüğünde yukarıda yazdım.


Umarım bir şey yardımcı olmuştur.

Dosyalar:
 
PODLIY16 :

Bunun gibi deneyin, 2 yeni değişken var:


extern bool IfTrueThenCountBarWork = false; // - false olarak ayarlanırsa, bu işlev çalışmaz, çalışması için true olarak ayarlanması gerekir.

harici int CountBar = 0; // - kapatılacak çubuk sayısı. Barlar düşünüldüğünde yukarıda yazdım.


Umarım bir şey yardımcı olmuştur.




Teşekkür ederim!