コーディングヘルプ...アラートの代わりにインジケータをフィルタリングする方法を教えてください。 - ページ 5 1234567891011 新しいコメント 削除済み 2006.06.30 17:05 #41 注文が現在のビッド/アスクに近すぎる。注文は現在の価格から一定距離以上離れている必要があります。Marketinfo関数で stop_levelパラメータを使用してその情報を抽出し、注文がアスク/ビッドからその程度離れていることを確認します。 お役に立てれば幸いです。 削除済み 2006.06.30 18:37 #42 Maji: 注文が現在のビッド/アスクに近すぎるのです。注文は現在の価格から一定の距離を置く必要があります。Marketinfo関数でstop_levelパラメータを使用してその情報を抽出し、注文がアスク/ビッドからその程度離れていることを確認してください。 これが役立つことを願っています。 うーん...... 申し訳ありませんが、私はあなたを失った... 今現在の水準で注文を出すことはできないのでしょうか?今まで私がやってきたことは、ほとんどが期先の終値で注文を実行してきました。これってできるんですか? stop_levelパラメータとmarketinfo関数が何なのか、まず勉強しないといけませんね。 ご指導ありがとうございました。 トレンドバンドインディケータをアップデートしてみました。 さて、ここで... MarketInfo()関数で使用される市場情報の 識別子です。 以下の値のいずれかになります。 MODE_STOPLEVEL 14 ストップレベル(ポイント)。 ということは... MarketInfo(14) ってどこに書けばいいんだ? それとも... MarketInfo(NULL,MODE_STOPLEVEL) です。 または... double bid =MarketInfo(NULL,MODE_BID); double ask =MarketInfo(NULL,MODE_ASK); double point =MarketInfo(NULL,MODE_POINT); この使い方がよくわからないのですが、例を示してもらえますか? このEAは以前は注文を出すのに苦労しなかったのに、なぜ今は注文を出すようになったのでしょうか?フィルターを追加する前はうまくいっていたのに? //----------channel filter double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0); double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0); // ENTRY if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu) { double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position if(isCrossed == 1 && Ask < upLevel) { if(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); else ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); //###################################################################### the added code starts here if(UseStopLoss) ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); else ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); //###################################################################### ends here return(0); } if(isCrossed == 2 && Ask > LowLevel) { if(UseStopLoss) ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); else ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); //###################################################################### the added code starts here if(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); else ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); //###################################################################### ends here return(0); } return(0); } return(0); } return(0); } } //+------------------------------------------------------------------+ ファイル: trend_bands_v3.mq4 4 kb Coding help..How do I [ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. Any rookie question, so 削除済み 2006.06.30 20:00 #43 ストップオーダーを 現在の価格からどの程度離すべきかは、MarketInfo(NULL,MODE_STOPLEVEL)を使って決定する必要があります。これはピップ単位で値を返します。 しかし、次のような方法でポイントに変換することができます。 double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits); これで、あなたのストップオーダーが少なくとも現在の市場価格からその距離だけ離れていることを確認できます。ちなみに、NormalizeDoubleとDigitsを使うことで、pipの値を10進数以降の適切な場所(4または2)に変換しています。これはMT4のとてもいいところですね。 お役に立てれば幸いです。 マジ 削除済み 2006.06.30 20:59 #44 Maji: 逆指値注文が現在の価格からどのくらい離れているかを決定するには、MarketInfo(NULL,MODE_STOPLEVEL)を使用する必要があります。これはピップ単位で値を返すことに注意してください。 ただし、以下のような方法でPointに変換することができます。double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);これで、あなたのストップオーダーが少なくとも現在の市場価格からその距離だけ離れていることを確認できます。ちなみに、NormalizeDoubleとDigitsを使うことで、pipの値を10進数以降の適切な場所(4または2)に変換しています。これはMT4のとてもいいところですね。お役に立てれば幸いです。 マジ なぜインディケータをフィルターとして追加すると、注文やストップの置き方がおかしくなるのかがわかりません。私の知る限りでは何も変わっていないのですが、なぜラインより上の取引を禁止するとストップオーダーの 出し方が変わってしまうのでしょうか? 削除済み 2006.06.30 22:14 #45 もし差し支えなければ、現在のコードをメールで送ってください。週末にそれを見てみるつもりです。必ず直るとお約束はできませんが、誠実に対応させていただきます。 eli 2006.07.01 01:34 #46 まず、あなたの問題点はここにあります。 if(isCrossed == 1 && Ask < upLevel-longrange)[/PHP] Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points the corrected code is like that [PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point) Coding help..How do I How to open new Older items 削除済み 2006.07.01 03:13 #47 今回ばかりは簡単な解決策です。 ただ... ただ、この投稿をした後、私はそれを変更しました。 バンドを広くしたり狭くしたりするパラメータでインジケータを修正し、ラインに近接する境界を作るEAの部分を削除しました。トレードバンド自体を狭くしたり広くしたりすれば、そんなに複雑なことをしなくても同じような機能が 得られるし、私にとっては精神的にも楽だと思ったので......。 現在はこんな感じです。 //----------channel filter double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0); double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0); // ENTRY if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu) { double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position if(isCrossed == 1 && Ask < upLevel) { if(UseStopLoss) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green); else askとuplevelの両方が価格になっていますね。 これはまだエラーが発生しているコードです。 Coding help..How do I Help adding indicator as オジャラEA eli 2006.07.01 06:04 #48 今のところ問題はありません(コード指向)。 しかし、論理的には、次のようになります。 if(isCrossed == 1 && Ask < upLevel) あなたは、両者が接近していることをチェックして いるのではなく、価格がラインより低いことをチェックしているだけです。 eli 2006.07.01 06:57 #49 私はそれを持っていることを知っていた!!! このEAは、4つのTFを同時にチェックすることができます。 このEAは、最大4つのTFをチェック することができ、それらのすべてが同時にエッジを得るかどうかを確認することができます。1つだけ選択することも可能です。 インジケーターのロジックの出し方、複数のTFの組み合わせの例としてお使いください。 よろしくお願いします。 エリ ファイル: tbs.mq4 7 kb 削除済み 2006.07.01 13:46 #50 elihayun: やっぱりあるんだーーーー。私は、あなたが取得したいものを正確にテストし、私のpreviousuos投稿は、ちょうど間違ったEAを置く。 このEAは、最大4つのTFをチェックすることができ、それらのすべてが同時にエッジを得るかどうかを確認します。1つだけ選択することも可能です。 インジケーターのロジックの出し方、複数のTFの組み合わせの例としてお使いください。 よろしくお願いします。 エリ this is intriguing 私はまだマルチTFのインジケーターを本格的に研究したことはありませんが、メリットはあると思っています。 1234567891011 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
注文が現在のビッド/アスクに近すぎる。注文は現在の価格から一定距離以上離れている必要があります。Marketinfo関数で stop_levelパラメータを使用してその情報を抽出し、注文がアスク/ビッドからその程度離れていることを確認します。
お役に立てれば幸いです。
注文が現在のビッド/アスクに近すぎるのです。注文は現在の価格から一定の距離を置く必要があります。Marketinfo関数でstop_levelパラメータを使用してその情報を抽出し、注文がアスク/ビッドからその程度離れていることを確認してください。 これが役立つことを願っています。
うーん......
申し訳ありませんが、私はあなたを失った...
今現在の水準で注文を出すことはできないのでしょうか?今まで私がやってきたことは、ほとんどが期先の終値で注文を実行してきました。これってできるんですか?
stop_levelパラメータとmarketinfo関数が何なのか、まず勉強しないといけませんね。
ご指導ありがとうございました。
トレンドバンドインディケータをアップデートしてみました。
さて、ここで...
MarketInfo()関数で使用される市場情報の 識別子です。
以下の値のいずれかになります。
MODE_STOPLEVEL 14 ストップレベル(ポイント)。
ということは...
MarketInfo(14)
ってどこに書けばいいんだ?
それとも...
MarketInfo(NULL,MODE_STOPLEVEL) です。
または...
double bid =MarketInfo(NULL,MODE_BID);
double ask =MarketInfo(NULL,MODE_ASK);
double point =MarketInfo(NULL,MODE_POINT);
この使い方がよくわからないのですが、例を示してもらえますか?
このEAは以前は注文を出すのに苦労しなかったのに、なぜ今は注文を出すようになったのでしょうか?フィルターを追加する前はうまくいっていたのに?
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### ends here
return(0);
}
if(isCrossed == 2 && Ask > LowLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### ends here
return(0);
}
return(0);
}
return(0);
}
return(0);
}
}
//+------------------------------------------------------------------+ストップオーダーを 現在の価格からどの程度離すべきかは、MarketInfo(NULL,MODE_STOPLEVEL)を使って決定する必要があります。これはピップ単位で値を返します。
しかし、次のような方法でポイントに変換することができます。
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
これで、あなたのストップオーダーが少なくとも現在の市場価格からその距離だけ離れていることを確認できます。ちなみに、NormalizeDoubleとDigitsを使うことで、pipの値を10進数以降の適切な場所(4または2)に変換しています。これはMT4のとてもいいところですね。
お役に立てれば幸いです。
マジ
逆指値注文が現在の価格からどのくらい離れているかを決定するには、MarketInfo(NULL,MODE_STOPLEVEL)を使用する必要があります。これはピップ単位で値を返すことに注意してください。
ただし、以下のような方法でPointに変換することができます。
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
これで、あなたのストップオーダーが少なくとも現在の市場価格からその距離だけ離れていることを確認できます。ちなみに、NormalizeDoubleとDigitsを使うことで、pipの値を10進数以降の適切な場所(4または2)に変換しています。これはMT4のとてもいいところですね。
お役に立てれば幸いです。
マジなぜインディケータをフィルターとして追加すると、注文やストップの置き方がおかしくなるのかがわかりません。私の知る限りでは何も変わっていないのですが、なぜラインより上の取引を禁止するとストップオーダーの 出し方が変わってしまうのでしょうか?
もし差し支えなければ、現在のコードをメールで送ってください。週末にそれを見てみるつもりです。必ず直るとお約束はできませんが、誠実に対応させていただきます。
まず、あなたの問題点はここにあります。
Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points
the corrected code is like that
[PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point)今回ばかりは簡単な解決策です。
ただ...
ただ、この投稿をした後、私はそれを変更しました。 バンドを広くしたり狭くしたりするパラメータでインジケータを修正し、ラインに近接する境界を作るEAの部分を削除しました。トレードバンド自体を狭くしたり広くしたりすれば、そんなに複雑なことをしなくても同じような機能が 得られるし、私にとっては精神的にも楽だと思ったので......。
現在はこんな感じです。
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
elseaskとuplevelの両方が価格になっていますね。 これはまだエラーが発生しているコードです。
今のところ問題はありません(コード指向)。
しかし、論理的には、次のようになります。
if(isCrossed == 1 && Ask < upLevel)
あなたは、両者が接近していることをチェックして いるのではなく、価格がラインより低いことをチェックしているだけです。
私はそれを持っていることを知っていた!!!
このEAは、4つのTFを同時にチェックすることができます。
このEAは、最大4つのTFをチェック することができ、それらのすべてが同時にエッジを得るかどうかを確認することができます。1つだけ選択することも可能です。
インジケーターのロジックの出し方、複数のTFの組み合わせの例としてお使いください。
よろしくお願いします。
エリ
やっぱりあるんだーーーー。
私は、あなたが取得したいものを正確にテストし、私のpreviousuos投稿は、ちょうど間違ったEAを置く。
このEAは、最大4つのTFをチェックすることができ、それらのすべてが同時にエッジを得るかどうかを確認します。1つだけ選択することも可能です。
インジケーターのロジックの出し方、複数のTFの組み合わせの例としてお使いください。
よろしくお願いします。
エリthis is intriguing 私はまだマルチTFのインジケーターを本格的に研究したことはありませんが、メリットはあると思っています。