アスク! - ページ 129 1...122123124125126127128129130131132133134135136...182 新しいコメント Goen_FX 2008.09.02 21:21 #1281 forexarchitect: こんにちはここで質問なのですが、以下のように変更するにはどうしたらいいのでしょうか? extern double MaxLot = 1.50; double max_lot = GetMaxLot(OP_BUY, OP_SELL); if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type); (注文タイプ)]:", lot); if (lot == -1) return (lot); lot = NormalizeDouble(lot, LotPrec); if (lot > MaxLot) lot = MaxLot; if (lot < MinLot) lot = MinLot; if (lot > MaxLot) lot = MaxLot; if (lot < MinLot) lot = MinLot; return (lot)。 } 上記は、OP_BUYと OP_SELLのチェックです。 質問:これを任意のOP_BUYまたは任意の OP_SELLに変更するにはどうすればよいですか? 認める GetMaxLot()関数の コードを修正するか、GetMaxLot(OP_BUY, OP_BUY);とGetMaxLot(OP_SELL, OP_SELL);(コードによって異なります - そのようにできるかどうか)を使うことができるかもしれないです。 しかし、私はそれが試してみる価値があると思います。 Goen Sadly 2008.09.02 21:40 #1282 Goen: これはあなたが探しているものですか?----------- int bars_count=WindowBarsPerChart(); int bar=WindowFirstVisibleBar()。 ----------- ゴーン ありがとうございます、Goen 。 削除済み 2008.09.03 03:03 #1283 Goen: GetMaxLot() 関数のコードを修正する必要があります。または、GetMaxLot(OP_BUY, OP_BUY); と GetMaxLot(OP_SELL, OP_SELL); を使うことができます(コードによって、そのようにできるかどうかが異なります)。しかし、私はそれが試してみる価値があると思います。 Goen 回答ありがとうございました。 何を変更すればいいのでしょうか? double GetMaxLot(int type1, int type2) { double max_lot = 0.0; int cnt = OrdersTotal(); for (int i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; if (OrderType() != type1 && OrderType() != type2) continue; もし、(OrderType() != type1 && OrderType() != type2) continue; if (max_lot == 0 || OrderLots() >= max_lot) { max_lot = OrderLots(); } return (max_lot)。 } 削除済み 2008.09.03 03:07 #1284 ちょっと困りますが...。 yarksiew 2008.09.03 03:27 #1285 TISインジケーターにアラートを追加するには? MAクロスオーバーのインジケーターはとてもよく動くのですが、サウンドアラートのサポートがないので、多くのトレードをミスしてしまいます。 以下はインジケーターのコードとインジケーターそのものです、ありがとうございます... /*[[ 名前 := EMA Cross 作者 := Hapsa リンク :=http://www.metaquotes.net/ セパレートウィンドウ := No セパレート・ウィンドウ := No 最初の色 := 赤 最初の描画タイプ := シンボル 最初のシンボル := 108 第二データ使用 := Yes 第二の色 := DarkOliveGreen 第二描画タイプ := シンボル 第2シンボル := 108 ]]*/ #property copyright "Hapsa" (ハプサ) #property リンク "" extern int SlowPeriod=20; extern int FastPeriod=5; #property indicator_buffers 3 #property indicator_chart_window #property indicator_color1 レッド #property indicator_color2 グリーン double L20[]; double L50[]; double shift=0,val1=0,val2=0。 int init() { IndicatorBuffers(3); SetIndexStyle(0,DRAW_ARROW)を設定します。 SetIndexStyle(1,DRAW_ARROW)を設定します。 SetIndexArrow(0, 108); SetIndexArrow(1, 108); SetIndexBuffer(0,L20)を設定します。 SetIndexBuffer(1,L50)を設定します。 //---- インジケータ //---- return(0); } int start() { int counted_bars=IndicatorCounted(); //---- int i = Bars - counted_bars - 1; while (i>=0) { val1=0; val2=0; double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1); double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA,PRICE_CLOSE,i); double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i-1); double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i-1); double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i); if (iMaFastPreviousiMaSlowCurrent ) val1=High; if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low; L20=val1+5*Point; L50=val2-5*Point; i--; } //---- return(0); } ファイル: cross.mq4 2 kb cross.ex4 3 kb Ask! グッピー多重移動平均 [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. Goen_FX 2008.09.03 18:28 #1286 forexarchitect: 回答ありがとうございます。何を変更すればよいのでしょうか? ご教授願います。 double GetMaxLot(int type1, int type2) { double max_lot = 0.0; int cnt = OrdersTotal(); for (int i=0; i < cnt; i++) { if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != Magic) continue; if (OrderType() != type1 && OrderType() != type2) continue; もし、(OrderType() != type1 && OrderType() != type2) continue; if (max_lot == 0 || OrderLots() >= max_lot) { max_lot = OrderLots(); } return (max_lot)。 } はい、買い建玉の最大ロットのみを取得するには GetMaxLot(OP_BUY,OP_BUY); を使用し、売り建玉の最大ロットのみを取得するには GetMaxLot(OP_SELL,OP_SELL); を使用することができます。 このコード "if (max_lot == 0 || OrderLots() >= max_lot)" を "if (OrderLots() > max_lot)" に単純化することができます。 もし、max_lot = 0 ならば、それは自動的に未決済取引のどのロットよりも低くなります。また、">="という記号は">"に変更します。なぜなら、同じ値であれば、同じ値でmax_lotを更新する必要はなく、無駄な労力を必要としないからです。新しい値がmax_lotより大きい場合のみ更新されます。 このコードを変更することで、処理を高速化することができます。 Goen azirtyken 2008.09.10 22:15 #1287 ストップロス問題 こんにちは。 私はFX/メタトレーディングの初心者ですが、どのように機能するかを理解しようとしています。 今、EAを書こうとしているのですが、何か基本的なことを見逃しているような気がしています。 もし、私のコードで、以下を置き換えると OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red); を OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red) と置き換えます。 この新しいバージョンをストラテジーテスターでテストしてみると、注文が少なくなっています。ストップロスを入れると、どうして注文の 数が減るのでしょうか?逆指値注文を入れると注文が早く出るので、新しい注文を早く入れられるというケースでは数が増えると想像できるのですが、注文が少なくなる・・・? どうでしょうか? ありがとうございます。 omelette 2008.09.10 22:18 #1288 azertyken2: こんにちは。私はFX/メタトレーディングの初心者ですが、その仕組みを理解しようとしています。 今、EAを書こうとしているのですが、何か基本的なことを見逃しているような気がしています。 もし、私のコードで、以下を置き換えると OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red); を OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red) と書き換えます。 この新しいバージョンをストラテジーテスターでテストしてみると、注文が少なくなっています。ストップロスをつけると、どうして注文数が減るのでしょうか?逆指値注文を入れると注文が早く出るので、新しい注文を早く入れられるというケースでは数が増えると想像できるのですが、注文が少なくなる・・・? どうなんでしょう? 感謝 10pipsはブローカーが設定したストップリミット(ブローカーによって異なる)に近すぎるかもしれません。つまり、10pipsのミニマムで、注文が出されているときにたまたま価格がこの中で1pips振れると、注文は拒否されるでしょう...。 azirtyken 2008.09.10 22:41 #1289 オムレツさん、おっしゃる通り、ストップロスを増やすと直りました!ありがとうございます。:-) Dave137 2008.09.11 00:28 #1290 #property indicator_color1 Magenta #property indicator_color2 Yellow extern bool TrendDirectionUp=true; string Color1; string Color2; int init() { if(TrendDirectionUp==true)//Conditionj 1 { Color1=Yellow; Color2=CLR_NONE; } if(TrendDirectionUp==false)//Condition2 { Color1=CLR_NONE; Color2=Magenta; } SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1); SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2); SetIndexArrow(0,172);//333 SetIndexArrow(1,172);//334 SetIndexBuffer(0,b1); SetIndexBuffer(1,b2); return(0); } 今現在、Color(s) 1とColor(s) 2の両方がグラフ上で'black'を表示しています。 この問題を解決するために、どなたか専門家のGuruに助けていただけないでしょうか? 事前にありがとうございました。 コーディングの方法は? Ask! How to code? 1...122123124125126127128129130131132133134135136...182 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
こんにちは
ここで質問なのですが、以下のように変更するにはどうしたらいいのでしょうか?
extern double MaxLot = 1.50;
double max_lot = GetMaxLot(OP_BUY, OP_SELL);
if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type);
(注文タイプ)]:", lot);
if (lot == -1) return (lot);
lot = NormalizeDouble(lot, LotPrec);
if (lot > MaxLot) lot = MaxLot;
if (lot < MinLot) lot = MinLot; if (lot > MaxLot) lot = MaxLot; if (lot < MinLot) lot = MinLot;
return (lot)。
}
上記は、OP_BUYと OP_SELLのチェックです。
質問:これを任意のOP_BUYまたは任意の OP_SELLに変更するにはどうすればよいですか?
認めるGetMaxLot()関数の コードを修正するか、GetMaxLot(OP_BUY, OP_BUY);とGetMaxLot(OP_SELL, OP_SELL);(コードによって異なります - そのようにできるかどうか)を使うことができるかもしれないです。
しかし、私はそれが試してみる価値があると思います。
Goen
これはあなたが探しているものですか?
-----------
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar()。
-----------
ゴーンありがとうございます、Goen 。
GetMaxLot() 関数のコードを修正する必要があります。または、GetMaxLot(OP_BUY, OP_BUY); と GetMaxLot(OP_SELL, OP_SELL); を使うことができます(コードによって、そのようにできるかどうかが異なります)。
しかし、私はそれが試してみる価値があると思います。
Goen回答ありがとうございました。
何を変更すればいいのでしょうか?
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;
if (OrderType() != type1 && OrderType() != type2) continue; もし、(OrderType() != type1 && OrderType() != type2) continue;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
return (max_lot)。
}
ちょっと困りますが...。
TISインジケーターにアラートを追加するには?
MAクロスオーバーのインジケーターはとてもよく動くのですが、サウンドアラートのサポートがないので、多くのトレードをミスしてしまいます。
以下はインジケーターのコードとインジケーターそのものです、ありがとうございます...
/*[[
名前 := EMA Cross
作者 := Hapsa
リンク :=http://www.metaquotes.net/
セパレートウィンドウ := No
セパレート・ウィンドウ := No
最初の色 := 赤
最初の描画タイプ := シンボル
最初のシンボル := 108
第二データ使用 := Yes
第二の色 := DarkOliveGreen
第二描画タイプ := シンボル
第2シンボル := 108
]]*/
#property copyright "Hapsa" (ハプサ)
#property リンク ""
extern int SlowPeriod=20;
extern int FastPeriod=5;
#property indicator_buffers 3
#property indicator_chart_window
#property indicator_color1 レッド
#property indicator_color2 グリーン
double L20[];
double L50[];
double shift=0,val1=0,val2=0。
int init()
{
IndicatorBuffers(3);
SetIndexStyle(0,DRAW_ARROW)を設定します。
SetIndexStyle(1,DRAW_ARROW)を設定します。
SetIndexArrow(0, 108);
SetIndexArrow(1, 108);
SetIndexBuffer(0,L20)を設定します。
SetIndexBuffer(1,L50)を設定します。
//---- インジケータ
//----
return(0);
}
int start()
{
int counted_bars=IndicatorCounted();
//----
int i = Bars - counted_bars - 1;
while (i>=0)
{
val1=0;
val2=0;
double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);
double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA,PRICE_CLOSE,i);
double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i-1); double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i-1);
double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA,PRICE_CLOSE,i);
if (iMaFastPreviousiMaSlowCurrent ) val1=High;
if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;
L20=val1+5*Point;
L50=val2-5*Point;
i--;
}
//----
return(0);
}
回答ありがとうございます。
何を変更すればよいのでしょうか? ご教授願います。
double GetMaxLot(int type1, int type2)
{
double max_lot = 0.0;
int cnt = OrdersTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != Magic) continue;
if (OrderType() != type1 && OrderType() != type2) continue; もし、(OrderType() != type1 && OrderType() != type2) continue;
if (max_lot == 0 || OrderLots() >= max_lot)
{
max_lot = OrderLots();
}
return (max_lot)。
}はい、買い建玉の最大ロットのみを取得するには GetMaxLot(OP_BUY,OP_BUY); を使用し、売り建玉の最大ロットのみを取得するには GetMaxLot(OP_SELL,OP_SELL); を使用することができます。
このコード "if (max_lot == 0 || OrderLots() >= max_lot)" を "if (OrderLots() > max_lot)" に単純化することができます。
もし、max_lot = 0 ならば、それは自動的に未決済取引のどのロットよりも低くなります。また、">="という記号は">"に変更します。なぜなら、同じ値であれば、同じ値でmax_lotを更新する必要はなく、無駄な労力を必要としないからです。新しい値がmax_lotより大きい場合のみ更新されます。
このコードを変更することで、処理を高速化することができます。
Goen
ストップロス問題
こんにちは。
私はFX/メタトレーディングの初心者ですが、どのように機能するかを理解しようとしています。
今、EAを書こうとしているのですが、何か基本的なことを見逃しているような気がしています。
もし、私のコードで、以下を置き換えると
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);
を
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red) と置き換えます。
この新しいバージョンをストラテジーテスターでテストしてみると、注文が少なくなっています。ストップロスを入れると、どうして注文の 数が減るのでしょうか?逆指値注文を入れると注文が早く出るので、新しい注文を早く入れられるというケースでは数が増えると想像できるのですが、注文が少なくなる・・・?
どうでしょうか?
ありがとうございます。
こんにちは。
私はFX/メタトレーディングの初心者ですが、その仕組みを理解しようとしています。
今、EAを書こうとしているのですが、何か基本的なことを見逃しているような気がしています。
もし、私のコードで、以下を置き換えると
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);
を
OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red) と書き換えます。
この新しいバージョンをストラテジーテスターでテストしてみると、注文が少なくなっています。ストップロスをつけると、どうして注文数が減るのでしょうか?逆指値注文を入れると注文が早く出るので、新しい注文を早く入れられるというケースでは数が増えると想像できるのですが、注文が少なくなる・・・?
どうなんでしょう?
感謝10pipsはブローカーが設定したストップリミット(ブローカーによって異なる)に近すぎるかもしれません。つまり、10pipsのミニマムで、注文が出されているときにたまたま価格がこの中で1pips振れると、注文は拒否されるでしょう...。
オムレツさん、おっしゃる通り、ストップロスを増やすと直りました!ありがとうございます。:-)
#property indicator_color2 Yellow
extern bool TrendDirectionUp=true;
string Color1;
string Color2;
int init() {
if(TrendDirectionUp==true)//Conditionj 1
{
Color1=Yellow;
Color2=CLR_NONE;
}
if(TrendDirectionUp==false)//Condition2
{
Color1=CLR_NONE;
Color2=Magenta;
}
SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);
SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);
SetIndexArrow(0,172);//333
SetIndexArrow(1,172);//334
SetIndexBuffer(0,b1);
SetIndexBuffer(1,b2);
return(0);
}今現在、Color(s) 1とColor(s) 2の両方がグラフ上で'black'を表示しています。
この問題を解決するために、どなたか専門家のGuruに助けていただけないでしょうか?
事前にありがとうございました。