アスク! - ページ 31

 
if (FirstRun==1) {

FirstRun=0;

prevtime=Time[0];

}

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

NewBar=0;

}

else {

prevtime

見つけた!」。 私たちは、私たちの理解不足の分野で、私たちよりも多くの知識と知恵を持っている他の人々の助けを借りて学ぶことができます。ありがとうございました。

デイブ <<<
 

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);

}

}

今、正しいフォーマットで、非常に寛大なコーダーの1人は、私が上記のこのSLとTPの問題を解決するのを助けてくれますか?私の最初のリクエストに戻ります。私のスリーププログラムは、様々な時間にEAを停止させます。EAはスリープモードになる前に、40-50pipのストップロス、100のテイクプロフィットで オープントレードを作成しました。EAがスリープ状態になる直前に、各オープンチケットのストップロスを15pipに、テイクプロフィットを25pipに変更したいのです。ストップロスはトレーリングストップではなく、現在の取引価格(テイクプロフィットも同様)より下(買い)または上(売り)のハードストップにしたいです。あなたの専門知識を貸してください、そして私の一日を作ってください!

 

トレイリングストップは、以下の関数を 使用します。わかりやすく書かれていると思います。時々、プログラミングオタクがコードを書くことがありますが、それはミリ秒単位で見れば効率的かもしれませんが、読んだりデバッグしたりするのがとても大変な作業になります。

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

}

それを次のようにしてスタートで呼び出します。

TrailingAlls(TrailStartPips,TrailStopPips)。

 

Majiさん、私のコードでは(間違っているのですが)。 私はトレーリングストップを望んでいるわけではありません。 私はただ、各オープンチケットが、現在の通貨価格から 15ピップのハードストップロスと25ピップのハードテイクプロフィットを持つように修正されることを望んでいます。

私は、通貨記号に関連する未決済を検索し、各開封取引のストップロスとテイクプロフィットを修正する必要があります。 それが必要なすべてです。

昨夜は余談になり、トレーリングストップの話になったのですが、私とフェニックスの間で誤解がありました。

このそれほど難しくない機能を達成するために、どうか私を助けてください。

Dave <<<
 

デイブ

その変更を行うための材料は、私がお渡ししたルーチンの中にあると思います。

そうでなければ、あなたのコードを投稿するか、私にメールを送ってください。時々、他の人のコードを読むのはとても難しいので、もしかしたら時間のかかる作業かもしれません。その場合、私は手をあげます。

がんばってください。

 

投稿番号309は、私のPHPのコードです。

オープントレードをハードストップロス15、ハードテイクプロフィット 25に変更するだけです。あなたのようなプロがこのコードを修正するのはそれほど難しいことではありません。

Dave <<
 

デイヴ

私が言ったように、そのような編集をするのは非常に時間がかかります。私は昼休みに遊んでいるのですが、ここで試してみてください。もしうまくいかなかったら、自己責任でお願いします。テストはしていませんので・・・。

これをメインプログラムの中で、スリープを指示する直前に呼び出してください。

がんばってください。

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

}

 

これのどこが修正されるのでしょうか? 当初のストップロスは40で、テイクプロフィットは100でした。 スリープモードの一環として、既存のオープン オーダーのストップロスは15に、テイクプロフィットは25に変更される予定です。

オープンオーダーチケット: スリープモード前。

スリープモード前 ストップロス-40 スリープモード前 テイクプロフィット-100 スリープモード後 ストップロス修正-15 スリープモード後 テイクプロフィット修正-25

注文の設定を初期化するのではなく、すでに発注され、まだ有効な既存の注文を修正 するのです。

とにかく助けてくれてありがとうございます。 なぜこんなに簡単なことが難しく見えるのでしょうか?

デイブ <<
 

デイブ

難しいことではありません。MQをもう少し勉強する必要があります。私が提供したコードをチェックしてみてください。パラメータ、stopとtakeprofitはあなたが使いたい数字であるべきです。

全てはそこにあります、あなたはそれをどう使うかを考えなければなりません。

 

タオルを投げる。 エラーが出るんです。 フェニックスが提供してくれたものを使うことにしています。この言語がアメリカで学べる学校があれば、確かに私の人生は楽になるでしょう。 残念ながら、ないのです。

マジさん、Phoenixさん、ご意見ありがとうございました。

デイブ <<<