コーディングのヘルプ - ページ 16 1...91011121314151617181920212223...786 新しいコメント gpociejewski 2012.01.08 12:28 #151 nontan:こんにちは、天才コーダーと親切な方々:D今、簡単なEAを開発していますが、以下の 条件が理解できません。前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)一つ書いてみました。if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) //最後のポジションはインスタントオーダー OP_BUY or OP_SELL{if(OrderClosePrice() == OrderTakeProfit()) //終値と利食い値が同じ場合{if(OrderType() == OP_BUY)/その注文は買い{OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義}else if(OrderType() == OP_SELL){OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);}}Strategy testerで何度も実行しましたが、思ったように動作して くれません。 どなたかこの質問に対してのヘルプを お願いします! よろしくお願いします。 [lang=pl]こんにちは。 EAのコード全体を添付していただけますか? 乾杯。 Grzesiek[/lang] Mladen Rakic 2012.01.09 10:37 #152 ... これを比較して使ってみてください if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits)) 多分それは役に立つでしょう nontan:こんにちは、天才コーダーと親切な方々:D今、簡単なEAを開発しているのですが、以下の 条件がわかりません。前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)一つ書いてみた。If(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) //最後のポジションはインスタントオーダー OP_BUY or OP_SELL{if(OrderClosePrice() == OrderTakeProfit()) //終値と利食い値が同じ場合{if(OrderType() == OP_BUY)/その注文は買い{OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義}else if(OrderType() == OP_SELL){OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);}}Strategy testerで何度も実行しましたが、思ったように動作して くれません。 どなたかこの質問に対してのヘルプを お願いします! よろしくお願いします。 nontan 2012.01.09 12:35 #153 ありがとうございました。 NormarizeDoubleを挿入しようとしたのですが、うまくいきませんでした...。 なぜうまくいかないのか、教えていただけませんか? --------------------------------------------------- #インクルード #define MAGIC 20120101 #define COMMENT "Riding9" です。 extern double Lots = 0.1; extern int Slippage = 3; extern int SLpips = 20; extern int TPpips = 50; extern int StartTime = 1; extern int FinishTime = 23; extern int MAPeriod = 48; int EntrySignal(int magic) { double pos = MyCurrentOrders(MY_OPENPOS, magic); double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1); int ret = 0; if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1; else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1; if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;// ([pos]=0.0000、[pos]=0.0000、[pos]=0.0000、[pos]=1.0000)。 else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1.5; return(ret); } bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic) { int mult=1; if(Digits == 3 || Digits == 5) mult=10; スリッページ *= mult; if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1; double sl=0, tp=0; if(slpips > 0) sl = price-slpips*Point*mult; if(tppips > 0) tp = price+tppips*Point*mult; もし、if(tppips > 0) tp = price+tppips*Point*mult; return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic)); } int start() { if(Hour() >= StartTime && Hour() < FinishTime)) { int sig_entry = EntrySignal(MAGIC); if(sig_entry > 0) { MyOrderClose(Slippage,MAGIC)。 MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。 } if(sig_entry < 0) { MyOrderClose(Slippage、MAGIC); MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。 } if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) { if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits)) { if(OrderType() == OP_BUY) { OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC); } else if(OrderType() == OP_SELL) { OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC); } } return(0); } return(0); ------------------------------------------------------ もし、私の間違いを発見されましたら、ご教示ください。 よろしくお願いします。 Coding help 初心者の方からの質問 MQL4 MT4 MetaTrader コーディングの方法は? Mladen Rakic 2012.01.09 12:47 #154 ...ノンタン この行は if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) [/PHP] 最後に閉じた注文ではなく、閉じた注文のキューで最初の(初期残高の後の)注文を選択します。つまり、最後の注文が何であったかをチェックして、それに対応するのではなく、常に1つの固定された注文をチェックして いるのです。もし、最後に閉じた注文(closed orders queueの最後の注文、ただし、metatrader [people] は、close date-timeでソートすると、それが最後であることを保証しないので注意)をテストしたい場合は、このチェック形式を使用します[PHP]if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)) nontan 2012.01.10 20:37 #155 mladenさん、ありがとうございます。 OrderHistoryTotal関数は まだ使ったことがないのですが、このコードには適切な関数ですね。 最終的には、TakeProfitを取得した後、新規にエントリーするようにしました。 企業様、皆様、ありがとうございました。 johnray 2012.01.17 15:26 #156 マスターコーダーの力を借りたい こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。 gpociejewski 2012.01.17 15:58 #157 johnray: こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。 [lang=pl]ただ、私に詳細を与える。 乾杯[/lang]。 johnray 2012.01.17 16:22 #158 PMを送りました g.pociejewski:[lang=pl]ただ私に詳細を与える Cheers[/lang]. thanks master i sent a pm. its little bit complicated. elbee1 2012.01.17 17:47 #159 自動更新のためのコード 常に更新が必要なインジケータを使用しています。15分足チャートを使用しているので、毎ティック 更新する必要はありませんが、大きな電力消耗がないのであれば、それは良いことです。少なくとも、各リフレッシュの間の時間間隔のオプションがあるべきです。今は、ドロップダウンの 'Charts' タブを使用して、'Refresh' を選択して、手動で1分おきくらいにリフレッシュしています。 インディやチャートを自動的に更新するコードや方法は、インディやEAに追加のコードを通してありますか? ありがとうございます、el bee cloki 2012.01.22 14:35 #160 [langtitle=fr]オリジナル指標WilderのParabolic Sar[/langtitle]を探しています。 [lang=fr]です。こんにちは。ワイルダーのパラボリックSAR、キプロコのオリジナルを捜しています。このインジケーターのコードはPRTプラットフォーム用に作成したのですが、MT4でのコーディングが分かりません。 もし、MT4のコーディングに詳しい方がいらっしゃいましたら、プライベートメッセージ で、このインジケーターをMT4で使えるようにするためのコードをお渡しします。 ありがとうございます。[/lang] 1...91011121314151617181920212223...786 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは、天才コーダーと親切な方々:D
今、簡単なEAを開発していますが、以下の
条件が理解できません。前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)
一つ書いてみました。
if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
//最後のポジションはインスタントオーダー OP_BUY or OP_SELL
{
if(OrderClosePrice() == OrderTakeProfit())
//終値と利食い値が同じ場合
{
if(OrderType() == OP_BUY)/その注文は買い
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義
}
else if(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);
}
}
Strategy testerで何度も実行しましたが、思ったように動作して
くれません。どなたかこの質問に対してのヘルプを
お願いします! よろしくお願いします。[lang=pl]こんにちは。
EAのコード全体を添付していただけますか?
乾杯。
Grzesiek[/lang]
...
これを比較して使ってみてください
多分それは役に立つでしょう
こんにちは、天才コーダーと親切な方々:D
今、簡単なEAを開発しているのですが、以下の
条件がわかりません。前のポジションがTake Profitで閉じられたら、次の建値でs/lとt/pで20pipsを設定する新しいエントリーをする。(5Mチャートで)
一つ書いてみた。
If(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
//最後のポジションはインスタントオーダー OP_BUY or OP_SELL
{
if(OrderClosePrice() == OrderTakeProfit())
//終値と利食い値が同じ場合
{
if(OrderType() == OP_BUY)/その注文は買い
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);// Lotsやその他の変数は自分で定義
}
else if(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);
}
}
Strategy testerで何度も実行しましたが、思ったように動作して
くれません。どなたかこの質問に対してのヘルプを
お願いします! よろしくお願いします。ありがとうございました。
NormarizeDoubleを挿入しようとしたのですが、うまくいきませんでした...。
なぜうまくいかないのか、教えていただけませんか?
---------------------------------------------------
#インクルード
#define MAGIC 20120101
#define COMMENT "Riding9" です。
extern double Lots = 0.1;
extern int Slippage = 3;
extern int SLpips = 20;
extern int TPpips = 50;
extern int StartTime = 1;
extern int FinishTime = 23;
extern int MAPeriod = 48;
int EntrySignal(int magic)
{
double pos = MyCurrentOrders(MY_OPENPOS, magic);
double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
int ret = 0;
if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1;
else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1;
if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;// ([pos]=0.0000、[pos]=0.0000、[pos]=0.0000、[pos]=1.0000)。
else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1.5;
return(ret);
}
bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)
{
int mult=1;
if(Digits == 3 || Digits == 5) mult=10;
スリッページ *= mult;
if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1;
double sl=0, tp=0;
if(slpips > 0) sl = price-slpips*Point*mult;
if(tppips > 0) tp = price+tppips*Point*mult; もし、if(tppips > 0) tp = price+tppips*Point*mult;
return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic));
}
int start()
{
if(Hour() >= StartTime && Hour() < FinishTime))
{
int sig_entry = EntrySignal(MAGIC);
if(sig_entry > 0)
{
MyOrderClose(Slippage,MAGIC)。
MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。
}
if(sig_entry < 0)
{
MyOrderClose(Slippage、MAGIC);
MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC).を送信します。
}
if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
{
if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))
{
if(OrderType() == OP_BUY)
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);
}
else if(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);
}
}
return(0);
}
return(0);
------------------------------------------------------
もし、私の間違いを発見されましたら、ご教示ください。
よろしくお願いします。
...
ノンタン
この行は 最後に閉じた注文ではなく、閉じた注文のキューで最初の(初期残高の後の)注文を選択します。つまり、最後の注文が何であったかをチェックして、それに対応するのではなく、常に1つの固定された注文をチェックして いるのです。もし、最後に閉じた注文(closed orders queueの最後の注文、ただし、metatrader [people] は、close date-timeでソートすると、それが最後であることを保証しないので注意)をテストしたい場合は、このチェック形式を使用しますmladenさん、ありがとうございます。
OrderHistoryTotal関数は まだ使ったことがないのですが、このコードには適切な関数ですね。
最終的には、TakeProfitを取得した後、新規にエントリーするようにしました。
企業様、皆様、ありがとうございました。
マスターコーダーの力を借りたい
こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。
こんにちは、私は私の戦略をコード化するために誰かを必要とするしてください。
[lang=pl]ただ、私に詳細を与える。
乾杯[/lang]。
PMを送りました
[lang=pl]ただ私に詳細を与える Cheers[/lang].
thanks master i sent a pm. its little bit complicated.
自動更新のためのコード
常に更新が必要なインジケータを使用しています。15分足チャートを使用しているので、毎ティック 更新する必要はありませんが、大きな電力消耗がないのであれば、それは良いことです。少なくとも、各リフレッシュの間の時間間隔のオプションがあるべきです。今は、ドロップダウンの 'Charts' タブを使用して、'Refresh' を選択して、手動で1分おきくらいにリフレッシュしています。
インディやチャートを自動的に更新するコードや方法は、インディやEAに追加のコードを通してありますか?
ありがとうございます、el bee
[langtitle=fr]オリジナル指標WilderのParabolic Sar[/langtitle]を探しています。
[lang=fr]です。ワイルダーのパラボリックSAR、キプロコのオリジナルを捜しています。このインジケーターのコードはPRTプラットフォーム用に作成したのですが、MT4でのコーディングが分かりません。
もし、MT4のコーディングに詳しい方がいらっしゃいましたら、プライベートメッセージ で、このインジケーターをMT4で使えるようにするためのコードをお渡しします。
ありがとうございます。