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

 
InTrance:
試さずに、

仕事中なんですが、メタトレーダーのポートがここでブロックされています。

 

どうも、プログラミングはまだ初心者なのですが、この簡単なEAに以下の機能を追加するのに苦労しています。

1.利食い

2.ストップロス

3.トレーリングストップ

4.トレーリングストップを有効にするためのピップ数

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

}

 

パラボリックサーから ジャンプを検出するには?

現在、ジャンプを検出するために、以下のコードを使用しています。

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // もしジャンプアップがあった場合

しかし、これは正しく動作しないようです。

psarが私のバーの上か下かを検出するにはどうしたらよいでしょうか?

TIA

 
:: メタトレーダーでプロキシを使用する...

IN10TION

ssvl:
私は職場にいるのですが、メタトレーダーのポートがここでブロックされています
 
:: サーの結果と現在の終値[0]を比較。
ssvl:
私は現在、ジャンプを検出するためにこのコードを使っています。

if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // もしジャンプアップがあった場合

しかし、これは正しく動作しないようです。

psarが私のバーの上にあるか下にあるかを検出するにはどうすればよいですか?

TIA
 

IN10TIONさん、EAが次のシグナルが来るまで次の取引をしないように、取引が終了したかどうかを確認 する良い方法をご存知ですか?私のEAは、例えば10バーまで取引条件をチェックしますが、もし最初の数バーですでに売りの取引条件が満たされ、決済された場合、EAは10バーオフセットまでチェックを止め、次の実際のシグナルまで待ちたいのですが?

ありがとうございます。

 

OrderHistory()関数を 使用してください。

ルクス

 
luxinterior:
OrderHistory()関数を使用してください。

ありがとうございます。しかし、それがどのように機能するかはわかりません。注文がクローズされたかどうかではなく、注文が何小節以内にオープンされクローズされたかどうかを知りたいのです。そして、次のメインシグナルエントリーの時だけ、次の取引を行います。注文が開かれ、閉じられたが、取引条件はまだ満たされている場合、私はまだ迅速な取引の再エントリを排除しようとしています。メインシグナルごとに1回だけ取引して、取引条件がまだ有効であっても、そのシグナルですでに取引されている場合は再度取引しないようにしたいのです(オフセットを含む)。

例を挙げて説明させてください。しょうがないことかもしれませんが。

例:QQEとVQIをシグナルトレードのエントリー ポイントとして使っているとします(QQEがクロスしてVQIが買いから売りに変わる、またはその逆)。

QQEとVQIのシグナルが同じバーで発生しない可能性があるため、6バーのSignalOffsetオプションを追加することにします。

今、QQEとVQIが一致したとき、互いに2バー以内に有効な取引があるとします。今、取引が行われますが、私は10ピップのTPを持っており、バーは15ピップ動き、私のTPはヒットし、取引は終了します。取引条件は、私の6本のバーのオフセットのためにまだ満たされており、別の取引が行われます(再エントリー)悪い その1つまたは2つのバーが100ピップ移動して私のTPが10なら、私はちょうど10の取引を持っていました。悪い 私は、1シグナル(オフセットを含む)ごとに1つの取引だけをしたいです。

私はまだそれが反対の信号が発生し、他の取引がまだ閉じていた場合、6バー内で取引したいのですが、それは意味をなさないのでしょうか。

ありがとうございます。

 
::[switch] 変数を作って、もしすでに1つの売り注文が 出されていたら、他の売りを止めて(スイッチの値は-1)、買いシグナルと買い注文が出たときだけ再調整します(スイッチの値は1)...何か追加で(余剰)考えられるのはタイマーリセットで、もし大きな上昇または下落傾向があれば、同じ注文(タイミング)間にある種の間隔で2つか3つの売りを持ってもいいのでは?

IN10TION

matrixebiz:
ありがとうございます、しかし、それがどのように動作するかはわかりません。私は、注文がちょうど閉じられたかどうかを知りたいのではなく、注文がちょうど多くのバー内で開かれ、閉じられたかどうかを知ることができます。そして、次のメインシグナルエントリーの時だけ、次の取引を行います。注文が開かれ、閉じられたが、取引条件はまだ満たされている場合、私はまだ迅速な取引の再エントリを排除しようとしています。取引条件が成立していても、そのシグナルで既に取引されている場合は再取引しない(オフセットを含む)ように、何とかメインシグナルごとに1回だけ取引できるようにしたい。

例を挙げて説明しよう。しょうがないことかもしれませんが。

例:QQEとVQIをシグナルトレードのエントリーポイントとして使っているとします(QQEのクロスとVQIが買いから売りに変わる、またはその逆)。

QQEとVQIのシグナルが同じバーで発生しない可能性があるため、6バーのSignalOffsetオプションを追加することにします。

今、QQEとVQIが一致したとき、互いに2バー以内に有効な取引があるとします。今、取引が行われますが、私は10ピップのTPを持っており、バーは15ピップ動き、私のTPはヒットし、取引は終了します。取引条件は、私の6本のバーのオフセットのためにまだ満たされており、別の取引が行われます(再エントリー)悪い その1つまたは2つのバーが100ピップ移動して私のTPが10なら、私はちょうど10の取引を持っていました。悪い 私は、信号ごとに一つの取引(オフセットを含む)だけを望んでいます。

とはいえ、反対のシグナルが発生し、他のトレードがまだクローズされている場合は、6バー内でトレードしてほしいです。

ありがとうございます。
 

2つのメタトレーダー間でデータを共有する

あるメタトレーダーからファイルにデータを書き込んで、別のメタトレーダーからデータを読み込もうとしています。

問題は、c:⇄に書き込もうとすると、"絶対ファイルパス "C:⇄.txt" は許可されません "というエラーメッセージが表示されることです。

2つのメタトレーダー間でデータを共有するために、何かアイデアや他の方法はありますか?

理由: