コーディングの方法は? - ページ 123 1...116117118119120121122123124125126127128129130...347 新しいコメント Steven 2008.08.27 12:03 #1221 InTrance: 試さずに、 。 仕事中なんですが、メタトレーダーのポートがここでブロックされています。 削除済み 2008.08.27 18:02 #1222 どうも、プログラミングはまだ初心者なのですが、この簡単な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); } How to code? MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 Stop Loss Hiding Steven 2008.08.28 06:49 #1223 パラボリックサーから ジャンプを検出するには? 現在、ジャンプを検出するために、以下のコードを使用しています。 if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // もしジャンプアップがあった場合 しかし、これは正しく動作しないようです。 psarが私のバーの上か下かを検出するにはどうしたらよいでしょうか? TIA IN10TION 2008.08.28 07:03 #1224 :: メタトレーダーでプロキシを使用する...IN10TION ssvl: 私は職場にいるのですが、メタトレーダーのポートがここでブロックされています 。 IN10TION 2008.08.28 07:05 #1225 :: サーの結果と現在の終値[0]を比較。 ssvl: 私は現在、ジャンプを検出するためにこのコードを使っています。if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // もしジャンプアップがあった場合 しかし、これは正しく動作しないようです。 psarが私のバーの上にあるか下にあるかを検出するにはどうすればよいですか? TIA matrixebiz 2008.08.28 09:08 #1226 IN10TIONさん、EAが次のシグナルが来るまで次の取引をしないように、取引が終了したかどうかを確認 する良い方法をご存知ですか?私のEAは、例えば10バーまで取引条件をチェックしますが、もし最初の数バーですでに売りの取引条件が満たされ、決済された場合、EAは10バーオフセットまでチェックを止め、次の実際のシグナルまで待ちたいのですが? ありがとうございます。 luxinterior 2008.08.28 14:13 #1227 OrderHistory()関数を 使用してください。 ルクス matrixebiz 2008.08.28 16:08 #1228 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バー内で取引したいのですが、それは意味をなさないのでしょうか。 ありがとうございます。 IN10TION 2008.08.28 17:08 #1229 ::[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バー内でトレードしてほしいです。 ありがとうございます。 myaron 2008.08.28 19:01 #1230 2つのメタトレーダー間でデータを共有する あるメタトレーダーからファイルにデータを書き込んで、別のメタトレーダーからデータを読み込もうとしています。 問題は、c:⇄に書き込もうとすると、"絶対ファイルパス "C:⇄.txt" は許可されません "というエラーメッセージが表示されることです。 2つのメタトレーダー間でデータを共有するために、何かアイデアや他の方法はありますか? 1...116117118119120121122123124125126127128129130...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
試さずに、 。
仕事中なんですが、メタトレーダーのポートがここでブロックされています。
どうも、プログラミングはまだ初心者なのですが、この簡単な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
私は職場にいるのですが、メタトレーダーのポートがここでブロックされています 。
私は現在、ジャンプを検出するためにこのコードを使っています。
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // もしジャンプアップがあった場合
しかし、これは正しく動作しないようです。
psarが私のバーの上にあるか下にあるかを検出するにはどうすればよいですか?
TIAIN10TIONさん、EAが次のシグナルが来るまで次の取引をしないように、取引が終了したかどうかを確認 する良い方法をご存知ですか?私のEAは、例えば10バーまで取引条件をチェックしますが、もし最初の数バーですでに売りの取引条件が満たされ、決済された場合、EAは10バーオフセットまでチェックを止め、次の実際のシグナルまで待ちたいのですが?
ありがとうございます。
OrderHistory()関数を 使用してください。
ルクス
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バー内で取引したいのですが、それは意味をなさないのでしょうか。
ありがとうございます。
ありがとうございます、しかし、それがどのように動作するかはわかりません。私は、注文がちょうど閉じられたかどうかを知りたいのではなく、注文がちょうど多くのバー内で開かれ、閉じられたかどうかを知ることができます。そして、次のメインシグナルエントリーの時だけ、次の取引を行います。注文が開かれ、閉じられたが、取引条件はまだ満たされている場合、私はまだ迅速な取引の再エントリを排除しようとしています。取引条件が成立していても、そのシグナルで既に取引されている場合は再取引しない(オフセットを含む)ように、何とかメインシグナルごとに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つのメタトレーダー間でデータを共有するために、何かアイデアや他の方法はありますか?