Sormak! - sayfa 31

 
if (FirstRun==1) {

FirstRun=0;

prevtime=Time[0];

}

if ((prevtime == Time[0]) && (CurTime()-prevtime)>MaxTradeTime) {

NewBar=0;

}

else {

prevtime

Buldum! Bunu gelecekte yapacağız - Anlayamadığımız alanlarda bizden daha fazla bilgi ve bilgeliğe sahip olan başkalarının yardımıyla öğreniyoruz! Çok teşekkürler!

Dave <<<
 

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

if(OrderOpenPrice()-Ask>=TrailingStop*Point)

{

if(OrderStopLoss()>Ask+Point*15||OrderStopLoss()==0)

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

}

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

if(Bid-OrderOpenPrice()>=TrailingStop*Point)

{

if(OrderStopLoss()<Bid-Point*15 ||OrderStopLoss()==0)

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

}

return(0);

}

return(0);

}

}

Şimdi doğru formatla, çok cömert kodlayıcılarınızdan biri yukarıdaki SL ve TP sorununu çözmeme yardım eder mi? Asıl isteğime geri dön. Uyku programım çeşitli zamanlarda EA'yı devre dışı bırakıyor. EA, uyku modundan önce 40 - 50 pip Zarar Durdur ve 100 Kâr Al ile açık işlemler yarattı. EA'nın uykuya geçmesinden hemen önce, her açık bilet üzerindeki Zarar Durdur'un 15 pip olarak değişmesini istiyorum ve kar al 25 pip olarak değişti. Stoploss, takip eden bir stop değil, mevcut işlem fiyatının altında (satın alma) veya üstünde (satma) (aynı şekilde Kâr Al) bir sabit durma olacaktır. Bana uzmanlığını ödünç ver ve günümü güzelleştir!!

 

Takip eden duraklar için aşağıdaki işlevi kullanın. Kolay anlaşılır bir dille yazıldığını düşünüyorum. Bazen programlama meraklıları kod yazar, bu bir milisaniyenin çok küçük bir kısmı kadar verimli olabilir, ancak okuması ve hata ayıklaması çok zor bir iş yapar.

void TrailingAlls(int start,int stop)

{

int profit;

double stoptrade;

double stopcal;

if(stop==0)

return;

int trade;

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

{

if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))

continue;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

{

if(OrderType()==OP_BUY)

{

profit=NormalizeDouble((Bid-OrderOpenPrice())/Point,0);

if(profit<start)

continue;

stoptrade=OrderStopLoss();

stopcal=Bid-(stop*Point);

if(stoptrade==0||(stoptrade!=0&&stopcal>stoptrade))

OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Blue);

}//Long

if(OrderType()==OP_SELL)

{

profit=NormalizeDouble((OrderOpenPrice()-Ask)/Point,0);

if(profit<start)

continue;

stoptrade=OrderStopLoss();

stopcal=Ask+(stop*Point);

if(stoptrade==0||(stoptrade!=0&&stopcal<stoptrade))

OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,OrderTakeProfit(),0,Red);

}//Shrt

}

}//for

}

Aşağıdakileri kullanarak başlarken arayın:

TrailingAlls(TrailStartPips,TrailStopPips);

 

Maji, kodumda (ki bu yanlış). Sondaki durakları istemiyorum. Ben sadece açık biletlerin değiştirilmesini istiyorum, böylece her bir açık alım ve satım, mevcut döviz fiyatından 15 piplik bir sabit durdurma kaybına ve 25 piplik bir sabit alım kârına sahip olacak.

Para birimi simgesiyle ilgili neyin açık olduğunu görmek için arama yapması ve ardından zararı durdurmayı değiştirmesi ve her açık ticarette kâr elde etmesi gerekiyor. İhtiyacım olan tek şey bu.

Dün gece bir teğet geçtik ve takip eden duraklara girdik - Phoenix ile benim aramda yanlış anlaşılma.

Lütfen bu çok zor olmayan işlevi gerçekleştirmeme yardım edin - Bu sizin için!

Dave <<<
 

Dave,

Sanırım bu değişikliği yapacak malzemeler sana verdiğim rutinde var.

Aksi takdirde, kodunuzu veya e-postanızı bana göndermeniz gerekecek ve ne yapabileceğimi görebiliyorum. Bazen başkalarının kodunu okumak çok zordur, bu yüzden zaman alıcı bir iş olabilir. Bu durumda ellerimi havaya kaldıracağım.

İyi şanlar.

 

Post # 309, PHP'de olduğu gibi benim kodum.

Sadece açık işlemleri 15'lik sabit zarar durdur ve 25'lik sabit kâr elde edecek şekilde değiştirmeniz gerekiyor. Sizin gibi bir profesyonelin bu kodlamayı değiştirmesi çok fazla olmamalıdır.

Dave <<
 

Dave,

Dediğim gibi, bu tür düzenlemeleri yapmak çok zaman alıyor. Öğle yemeği saatimde oynuyorum ve işte bir deneme. Eğer işe yaramazsa, kendi başınasın. Test edilmedi, yani...

Programa uyuma talimatı vermeden hemen önce bunu ana programınızda arayın.

İyi şanlar.

void ChangeStop(int takeprofit,int stop)

{

double profit;

double stopcal;

if(stop==0)

return;

int trade;

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

{

if(!OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))

continue;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

{

if(OrderType()==OP_BUY)

{

profit=Ask+(takeprofit*point);

stopcal=Bid-(stop*Point);

OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,profit,0,Blue);

}//Long

if(OrderType()==OP_SELL)

{

profit=Bid-(takeprofit*point);

stopcal=Ask+(stop*Point);

OrderModify(OrderTicket(),OrderOpenPrice(),stopcal,profit,0,Red);

}//Shrt

}

}//for

}

 

Modifikasyon bunun neresinde oluyor? Orijinal zararı durdur 40'tı ve kârı al 100'dü. Uyku modunun bir parçası olarak, zararı durdur, mevcut herhangi bir açık emirde 15 olarak değiştirilecek ve mevcut herhangi bir açık emirde kâr al, 25 olarak değiştirilecek.

Açık Sipariş Biletleri: Uyku modundan önce.

Uyku Modundan Önce Zarar Durdur - 40 Uyku Modundan Önce Kar Al-100 Uyku Modundan Sonra Zarar Durdur Modifikasyonu -15 Uyku Modundan Sonra Kar Al Modifikasyonu - 25

Sipariş ayarlarını başlatmıyorum, önceden verilmiş ve halen aktif olan mevcut siparişleri değiştiriyorum.

Yine de yardım ettiğin için teşekkürler! Bu kadar basit bir şey neden bu kadar zor görünüyor?

Dave <<
 

Dave,

Zor değil. MQ'yu biraz daha çalışman gerekecek. Verdiğim kodu kontrol edin. , stop ve takeprofit parametreleri kullanmak istediğiniz sayılar olmalıdır.

Hepsi orada, nasıl kullanılacağını bulmanız gerekecek

 

havlu atıyorum. hatalar alıyorum. Phoenix'in sağladıklarını kullanacağım çünkü birlikte yaşayacağım bir noktaya kadar çalışıyor. Bu dilin Amerika Birleşik Devletleri'nde öğrenebileceği bir okulu olsaydı, kesinlikle hayatımı kolaylaştırırdı. Ne yazık ki, hiçbiri yok.

Katkılarınız için teşekkürler, hem Maji hem de Phoenix!

Dave <<<