コーディングの方法は? - ページ 84

 

100均で買う・売る

ザマーニブです。

書いてあることは理解できるのですが、利益で決済するのがよくわかりません。

これはHedgeタイプのEAに見えますね。

FX-tsdにはそういうのがいくつかあります。

マーチンゲールである必要はありません。

Big Be

 
european:
どなたか、TakeProfit値で注文をクローズする方法について、アイデアやコードを教えてください。

MT4のOrderSend()関数内の'TakeProfit'は、ロング/バイオーダーではうまく機能しますが、ショート/セルオーダーではなぜかいつもうまくいきません。

注文のTakeProfitの値を現在の価格と比較するコードをいくつか書きましたが、正しく動作しません。 何かアイデアはありますか?

ユーロ

ロングは「買値」で決済され、ショートは「売値」で決済されます。

 
Big Be:
Zamanib。

書いてあることは理解できるのですが、利益で閉じるというのがよくわかりません。

これはHedgeタイプのEAに見えますね。

FX-tsdにはそういうのがいくつかあります。

マーチンゲールである必要はありません。

ビッグベー

私は市場が上下の波で動くのを見るいくつかの週は、上下の2サイクルを得る私はそれがトレンドのときに別のstrateyを持っています。

ヘッジEAに私を指示してください。私はそれの多くを見る。 しかし、何excatly私は何をしたいではありません。

 

コードやプラットフォームの問題?

ralph.ronnquist:
ロングは買値で、ショートは売値で決済しています。

ご返答ありがとうございます。

何らかの理由で私のコードは動作しません。

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) { (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit())

if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); } となります。

アドバイスを頂ければ幸いです。

ユーロ

 
european:
ご返答ありがとうございました。

なぜか私のコードはうまくいきません。

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }

[/PHP]

I would be grateful for advice.

euro

そうです。「Close[0]」は「買値」であり、OP_SELLがクローズされる価格ではありません。OP_SELLは、"bid "価格より数pips(別名スプレッド)高い "ask "価格に対してクローズされるのです。

EAを実行すると、「ビッド」価格は「ビッド」という変数で、「アスク」価格は「アスク」という変数で利用できます。ですから、コードスニペットは次のようにするのがよいでしょう。

[PHP]if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) { (OrderType() ==true)

if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo);}となります。

 

コードで助けてください、ありがとうございます...

こんにちは。

私はEAを書くのが初めてです、私は以下のことを試していましたが、 "OrderModify関数の無効なチケット "のエラーが発生しました、誰か親切に見て、助けてもらえますか? よろしくお願いします。

void ModifyHedgeSL(int SL) { (ヘッジSLの変更)

if (SL<1) return;

bool bres;

double sl,openadj;

if (lastopenbuy==1 && lastopensell==0) {openadj=Ask-Bid;} else {openadj=0;}.

for (int i = 0; i < OrdersTotal(); i++) { { オーダーセレクト(i, SERIES)

オーダーセレクト(i, SELECT_BY_POS,MODE_TRADES);

if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_BUY ) )

{

sl = GetLastLongOpenPrice()-openadj-SL*Point;

bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, White);

if (bres) Print("Modifing Hedge BUY completed");

if (!bres) Print("Error Modifying Hedge BUY order :",ErrorDescription(GetLastError()))。

if ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_SELL ) )

{

sl = GetLastShortOpenPrice()-openadj+SL*Point;

bres = OrderModify (OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, Gold);

if (bres) Print("Modifing Hedge SELL completed");

if (!bres) Print("Error Modifying HedgeSELL order:",ErrorDescription(GetLastError()))。

}

}

を返します。

}

ダブルGetLastLongOpenPrice() { {

int ord;

double LastLongOpenPrice=0;

//----

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol() == Symbol() && OrderMagicNumber() ==expertId && OrderType() == OP_BUY)

{

LastLongOpenPrice=OrderOpenPrice()。

}

if (LastLongOpenPrice>0) {return(LastLongOpenPrice);}.

else {return(-1);}。

}

 

SLがヒットしたときの買い/売り注文のコード化方法

例えば、私がEUR/JPYを164.30で1ロット買い、164.00でSLを設定したとします。

SLがヒットしたら、同じ価格164.30で、同じSLを164とし、さらにロットを1.5とした買い注文をもう一回出します。そして、SLが再びヒットしたら、同じ価格で同じSLで2ロットの買い注文をもう一回出します。

このためのコードはありますか?ありがとうございます。

 
boostrade:
例えば、EUR/JPYを164.30で1ロット買い、164.00でSLするとします。

がヒットしたら、同じ価格、164.30で、同じSLで、さらにロットを増やして1.5と言う買い注文を出します。そして、SLが再びヒットしたら、同じ価格で同じSLで2ロットの買い注文をもう一回出します。

これのための任意のコードはありますか?ありがとうございました。

フランクEAについてこのスレッドを見てくださいhttps://www.mql5.com/en/forum

私はそれがあなたが必要とするものであると思いますし、あなたは例としてそれを使用することができます。

 

OK

newdigital:
フランクEAについてこのスレッドを見てくださいhttps://www.mql5.com/en/forum 私は それがあなたが必要とするものであるか、またはあなたが例としてそれを使用することができると思います。

tks a lot newdigital, any questions i'll place here. tks again.

 

TP問題

if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) {

if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);

if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }

Ralphです。

ご覧のように、私は別の関数CloseOrder()を呼び出し、あなたが勧めるように'Ask'と'Bid'を使用していましたが、問題はまだ存在しています。

// 関数 CloseOrder ************************************************************************************************************************************************************************************

bool CloseOrder(int orderT) { (ブールクローズオーダー)

double sA;

if (OrderSelect(orderT, SELECT_BY_TICKET)==true)の場合{。

if (OrderType() == OP_BUY) sA = Bid;

else sA = Ask;

bool bClosed = OrderClose(orderT,OrderLots(),sA,0,CLR_NONE);

if (bClosed == 1) { { { pTrades = 0; return

pTrades = 0; return(1); }.

else return(0); }}

**********************************************************

私は、TPがヒットしたら取引が終了することを保証してくれると思っていたのですが、そうではありませんでした。104.03でショート注文が出され、TPが103.79でした。

ファイル:
tp_failed.jpg  32 kb