Nasıl kodlanır? - sayfa 69

 

Merhaba Wolfe

wolfe:
Bunun daha önce ele alındığını biliyorum, ancak biri bana bar başına yalnızca 1 ticarete izin verecek bir kod gösterebilir mi? Teşekkürler.

Bu benim için çalışıyor

tarihsaat LastOpenTime=0;

/////////////////////////////////////

int Sipariş;

for(int t=0;t<OrdersTotal();t++)

{

if(Sipariş Seçimi(t, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SEL)

{

if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();

}

}

}

Sonra sadece koduma yapıştırırım

if(SonAçılmaZamanı0)

{ OrderSend(filan filan)

Zaman[0], zaman çerçevenizin mumunun başlangıcıdır, bu nedenle doğru zaman çerçevesini seçtiğinizden emin olun.

 
waltini:
Bu benim için çalışıyor

tarihsaat LastOpenTime=0;

/////////////////////////////////////

....................

Zaman[0], zaman çerçevenizin mumunun başlangıcıdır, bu nedenle doğru zaman çerçevesini seçtiğinizden emin olun.

Bu biraz daha basit olabilir:

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

"Ticaret kodunuz" herhangi bir mum üzerinde yalnızca bir kez yürütülecektir. MT4'ünüzü kapatıp tekrar açsanız bile artık o mum üzerinde herhangi bir işlem olmayacak. Ama lütfen dikkat edin, diyelim ki EA'yı akşam 5'te bir mum üzerinde etkinleştirdiniz, o mumda da herhangi bir işlem olmayacak, bir sonraki mumu beklemeniz gerekiyor.

 
wolfe:
Bunun daha önce ele alındığını biliyorum, ancak biri bana bar başına yalnızca 1 ticarete izin verecek bir kod gösterebilir mi? Teşekkürler.

Global, bunu init()'ten önce koy

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

Programlama Yardımı

Merhaba,

Bazı şeyleri programlamak için elimden geleni yapıyorum ama bir tuğla duvara çarptım. Bu yüzden çok basit bir şey denedim. "Print("Beş");" yorumunu kaldırırsam ve programı test edin, yalnızca "Yahoooooooo" yazdıracaktır. (Eh, Bir'i de yazdırıyor.) Şimdi "Yazdır("Beş");" yorumuyla, "Yahooooooo" bile yazdırmıyor. Neyi kaçırıyorum??

Dosyalar:
trial.mq4  2 kb
 

1 işlem TP'ye ulaştığında tüm bekleyen ve açık emirleri kapatın

Merhaba,

EA'ma, TP'yi vuran 1 işlem olduğunda bekleyen ve açık tüm emirleri kapatacak bir kod yazmaya çalışıyorum. Aşağıda kullandığım kodlar çalışmıyor gibi görünüyor. Birisi bir göz atabilir ve neyin eksik olduğunu söyleyebilir. Teşekkürler.

if( ÖncekiOpenOrders > OpenSiparişler )

{

for( cnt = OrdersTotal()-1; cnt >= 0; cnt-- )

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

mod = OrderType();

if( OrderSymbol() == Symbol() &&

OrderMagicNumber()==Büyü)

{

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);

if (mod == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (mod == OP_BUYLIMIT) OrderDelete(OrderTicket());

}

}

}

}

 

OrderClosePrice() yerine sırasıyla Bid ve Ask kullanın...

 
ralph.ronnquist:
OrderClosePrice() yerine sırasıyla Bid ve Ask kullanın...

merhaba ralph,

örnek vererek yardımcı olurmusunuz Yardım için teşekkürler.

 
timebandit:
Merhaba, bazı şeyleri programlamak için elimden geleni yapıyorum ama bir tuğla duvara çarptım. Bu yüzden çok basit bir şey denedim. "Print("Beş");" yorumunu kaldırırsam ve programı test edin, yalnızca "Yahoooooooo" yazdıracaktır. (Eh, Bir'i de yazdırıyor.) Şimdi "Yazdır("Beş");" yorumuyla, "Yahooooooo" bile yazdırmıyor. Neyi kaçırıyorum??

Parantez kullanmazsanız, yalnızca bir satır yürütülür. Ne yapmak istediğine bağlı, ama bunu şöyle yapmalısın:

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

Durdur Bir Kez Hareket Et

İşte belirli bir kârdan sonra stoploss'u başa baş noktasına taşımak için kodum. Bunda yanlış bir şey var mı?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}
Neden: