Nasıl kodlanır? - sayfa 123

 
InTrance:
Denemeyin, yapın

işteyim... ve metatrader bağlantı noktası burada engellendi

 

Hey, programlamada hâlâ yeniyim ve bu basit EA'ya aşağıdaki özellikleri eklemekte sorun yaşıyorum:

1. Kâr Al

2. Kaybı Durdur

3. İzleyen Durdurma

4. Takip eden durdurmayı etkinleştirmek için pip sayısı

//---- input parameters

extern double Lots=0.1;

extern int Slippage=5;

int MagicNum = 98760;

bool longPosOpened, shortPosOpened;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);

double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);

if (crossup != EMPTY_VALUE)

{

if (!PosOpened(OP_BUY))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);

}

}

else if(crossdown != EMPTY_VALUE)

{

if (!PosOpened(OP_SELL))

{

CloseAllOpenAndPendingTrades();

OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);

}

}

return(0);

}

//+------------------------------------------------------------------+

bool PosOpened(int orderType)

{

int total=OrdersTotal();

for(int cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() == Symbol() && OrderType() == orderType)

{

return(true);

}

}

return(false);

}

void CloseAllOpenAndPendingTrades()

{

int total = OrdersTotal();

for(int i=total-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened long positions

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);

break;

//Close opened short positions

case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);

break;

//Close pending orders

case OP_BUYLIMIT :

case OP_BUYSTOP :

case OP_SELLLIMIT :

case OP_SELLSTOP : result = OrderDelete( OrderTicket() );

}

}

return(0);

}

 

Parabolik sardan bir sıçrama nasıl tespit edilir?

Şu anda bir atlama algılamak için bu kodu kullanıyorum:

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // yukarı sıçrama varsa

Ama bu doğru çalışmıyor gibi görünüyor.

Psar'ın çubuklarımın üstünde mi altında mı olduğunu nasıl anlarım?

TIA

 
:: metatrader'da proxy'nizi kullanın...

IN10TION

ssvl:
işteyim... ve metatrader bağlantı noktası burada engellendi
 
:: sar sonucunuzu mevcut bir kapanış[0] ile karşılaştırın
ssvl:
Şu anda bir atlama algılamak için bu kodu kullanıyorum:

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // yukarı sıçrama varsa

Ama bu doğru çalışmıyor gibi görünüyor.

Psar'ın çubuklarımın üstünde mi altında mı olduğunu nasıl anlarım?

TIA
 

Hey IN10TION, EA'nın bir sonraki sinyal gelene kadar başka bir işlem (yeniden giriş) yapmaması için bir işlemin henüz kapanıp kapanmadığını kontrol etmenin iyi bir yolunu biliyor musunuz? EA'm ticaret koşulunu 10 bara kadar kontrol eder, ancak ilk birkaç çubukta bir Satış ticaret koşulu zaten karşılandıysa ve kapatıldıysa, EA'nın 10 çubuk Ofset'e kadar kontrol etmeyi bırakmasını ve bir sonraki gerçek sinyale kadar beklemesini istiyorum?

teşekkürler

 

OrderHistory() işlevini kullanın.

Lüks

 
luxinterior:
OrderHistory() işlevini kullanın. Lüks

Teşekkürler ama bunun nasıl çalıştığından emin değilim. Bir siparişin yeni kapatılıp kapatılmadığını gerçekten bilmek istemiyorum, daha çok bir siparişin bu kadar çok çubuk içinde Açılıp Kapandığını bilmek istiyorum. Ardından, yalnızca bir sonraki ana sinyal girişine başka bir işlem yapın. Bir emir henüz açılıp kapatıldığında, ancak ticaret koşulları hala karşılandığında, hızlı ticaret yeniden girişlerini ortadan kaldırmaya çalışıyorum. Bir şekilde, ana sinyal başına yalnızca bir ticaret yapmasını istiyorum, bu nedenle ticaret koşulları hala geçerli olsa bile, o sinyalde zaten ticaret yapıldıysa (ofset dahil) tekrar ticaret yapmayın.

Bakalım bir örnekle anlatabilecek miyim? Bu, yardım edilemeyecek bir şey olabilir.

EG: Diyelim ki QQE ve VQI'yi bir sinyal ticaret giriş noktası olarak kullanıyorum (QQE çapraz ve VQI, alımdan Satışa veya tam tersi)

Şimdi, QQE çaprazı ve VQI sinyali tam olarak aynı çubukta gerçekleşmeyebileceğinden, 6 çubuk diyelim bir SignalOffset seçeneği ekliyorum.

Şimdi diyelim ki QQE ve VQI anlaştığında birbirinin 2 çubuğu içinde geçerli bir ticaret var, yani şimdi bir ticaret yapılıyor ama 10 pipslik bir TP'm var ve çubuk 15 pips hareket ediyor TP'm vuruldu ve ticaret kapandı. 6 bar Offset'im nedeniyle ticaret koşulları hala karşılanıyor, şimdi başka bir ticaret yapıldı (yeniden giriş) kötü bu bir veya iki çubuk 100 pips taşırsa ve TP'm 10 ise, az önce 10 işlemim oldu, kötü Sinyal başına sadece bir işlem istiyorum (Offset dahil)

bu mantıklı mı? Yine de 6 çubuk içinde ticaret yapmasını isterim, ancak ters sinyal olursa ve diğer ticaret hala kapalıysa.

teşekkürler

 
:: bir [switch] değişkeni yapın, zaten yapılmış 1 satış emri varsa, diğer satışları durdurur (anahtar değeri -1'dir) ve yalnızca bir alış sinyali ve verilen bir alış emri olduğunda (değişim değeri 1) yeniden ayarlanır. .. Ekstra bir şey (fazlalık) bir zamanlayıcı sıfırlamasıdır, eğer büyük bir yukarı veya aşağı trend varsa, aynı emirler arasında bir çeşit aralıkla 2 veya 3 satış yapabilirsiniz (zamanlama).

IN10TION

matrixebiz:
Teşekkürler ama bunun nasıl çalıştığından emin değilim. Bir siparişin yeni kapatılıp kapatılmadığını gerçekten bilmek istemiyorum, daha çok bir siparişin bu kadar çok çubuk içinde Açılıp Kapandığını bilmek istiyorum. Ardından, yalnızca bir sonraki ana sinyal girişine başka bir işlem yapın. Bir emir henüz açılıp kapatıldığında, ancak ticaret koşulları hala karşılandığında, hızlı ticaret yeniden girişlerini ortadan kaldırmaya çalışıyorum. Bir şekilde, ana sinyal başına yalnızca bir ticaret yapmasını istiyorum, bu nedenle ticaret koşulları hala geçerli olsa bile, o sinyalde zaten ticaret yapıldıysa (ofset dahil) tekrar ticaret yapmayın.

Bakalım bir örnekle anlatabilecek miyim? Bu, yardım edilemeyecek bir şey olabilir.

EG: Diyelim ki QQE ve VQI'yi bir sinyal ticaret giriş noktası olarak kullanıyorum (QQE çapraz ve VQI, alımdan Satışa veya tam tersi)

Şimdi, QQE çaprazı ve VQI sinyali tam olarak aynı çubukta gerçekleşmeyebileceğinden, 6 çubuk diyelim bir SignalOffset seçeneği ekliyorum.

Şimdi diyelim ki QQE ve VQI anlaştığında birbirinin 2 çubuğu içinde geçerli bir ticaret var, yani şimdi bir ticaret yapılıyor ama 10 pipslik bir TP'm var ve çubuk 15 pips hareket ediyor TP'm vuruldu ve ticaret kapandı. 6 bar Offset'im nedeniyle ticaret koşulları hala karşılanıyor, şimdi başka bir ticaret yapıldı (yeniden giriş) kötü bu bir veya iki çubuk 100 pips taşırsa ve TP'm 10 ise, az önce 10 işlemim oldu, kötü Sinyal başına sadece bir işlem istiyorum (Offset dahil)

bu mantıklı mı? Yine de 6 çubuk içinde ticaret yapmasını isterim, ancak ters sinyal olursa ve diğer ticaret hala kapalıysa.

teşekkürler
 

2 metatrader uygulaması arasında veri paylaşımı

İkinci bir metatraderdan okumak için bir metatrader'dan bir dosyaya veri yazmaya çalışıyorum.

Sorun şu ki, c:\'ye yazmaya çalıştığımda "mutlak dosya yolu "C:\EURUSD.txt"ye izin verilmiyor" hata mesajı alıyorum

İki metatrader uygulaması arasında veri paylaşmanın herhangi bir fikri veya başka bir yolu var mı?

Neden: