ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "My RSI", MagicNamber,0,Green)を実行。 if(チケット>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()) }
Closes、これは私が偶然に削除された、そうでなければコンパイルされません、 if(OrderType()==OP_SELL && OrderMagicNumber()==mnum then falls out, but works trick on short and long transactions, and error "No error" with sound "timeout." msgstr "タイムアウト。wav "はショートトレードでのみ動作し、ロングトレードでは問題なく動作します、同じ括弧があり、すべて同じです
こんにちは
なぜスクープが買うのか、アドバイスしてください、しかし、条件が熟しているときに位置を閉じません
/---- 入力パラメータextern int PerRSI=8;
extern int MagicNamber=77771;
extern double Lots=1.0;
//+------------------------------------------------------------------+
int start()
{
イント
cnt, // オーダーインデックス
ticket, // 注文識別番号
total; // すでにオープンしているオーダーの数
二重
rsi_0, // 値。rsi_0電流
rsi_1; // 値。rsi_1 1本目
if (Bars<100)
{
Print("bars less than 100");
return(0)です。
}
total=OrdersTotal()。
if(total<1)
{
rsi_0=iRSI(NULL,0, PerRSI,0,0); // 現在のバー
rsi_1=iRSI(NULL,0, PerRSI,0,1); // 現在のバー+1
if(rsi_0 < rsi_1 && rsi_0 < 30) // ラインが30を超えたら
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "My RSI", MagicNamber,0,Green)を実行。
if(チケット>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Error opening SELL order : ",GetLastError());
return(0)です。
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt,SELECT_BY_POS, MODE_TRADES)です。
if(OrderType()<=OP_BUY && OrderSymbol()==Symbol()) // これはオープンポジションか?OP_BUYまたはOP_SELL
{
if(OrderType()==OP_BUY) // ロングポジションを開く
{
if(rsi_0 > rsi_1 && rsi_0 > 70) // ラインが70を超えたら
{
オーダークローズ(OrderTicket(),1,Bid,3,Violet); // クローズポジション
return(0); // 終了
}}}}}}
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "My RSI", MagicNamber,0,Green)を実行。
if(チケット>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice())
}
これは一体何なんだ?OrderSelect()は何のためにあるのですか?
あとは、コードがインデントなしで並べられていて、括弧を追うことができないため、理解しにくい--視界を損ねないようにしたいですね。
本当にありがとうございました。また、コンドルに-y。さて、もうひとつ問題があります。例えば、買いポジションを10個開設しています。ストップやテイクで1、2、3などのポジションを決済したとき、Expert Advisorは、買いのシグナルがあれば、買いを開始します。しかし、まずすべての注文を決済して、オープンポジションが1つもないときに、新しい取引サイクルを開始する必要があるのです。つまり、カウンターが必要なのです。最初にポジションを所定の数まで開き、ポジションを閉じるときにゼロにします。事前にお礼を申し上げたい。
まさに、今の時代に合ったやり方です。少なくとも1つの未決済注文がある限り、別の注文が開くことはありません。そうでない場合は、より精度を高めなければなりません。そして、オープンポジションがある場合に注文をオープンするかどうかを選択する必要があります。
ここで質問です。
MetaTraderにデバッグツールはありますか?
スクリプトやEAをどのようにデバッグしているか、ご経験をお聞かせください。
桁数、パラメータ、アルゴリズムのビジョンなど、すべてです。アルゴリズムのバグはどのようにキャッチするのですか?
ここで質問です。
MetaTraderにデバッグツールはありますか?
スクリプトやExpert Advisorをどのようにデバッグしているか、あなたの経験を教えてください。
デバッグが必要な場合は、Print()で行います。
しかし、ほとんどの場合、そのようなニーズは発生しません。
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
このデザインで、注文を閉じた後、最初に「timeout.wav」、閉じる注文の数と同じだけ「no error」(2つの注文を閉じた場合、「no error」は2回ポップアップするなど)が鳴り、その後「money.wav」が聞こえる理由を教えていただけませんでしょうか?面白いのは、これがショートトレードの場合だけで、ロングトレードの場合はすべてうまくいくことです。何がトリックなのか、どうすれば直るのか、誰が知っているのか。
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
このデザインで、注文を閉じた後、最初に「timeout.wav」、閉じる注文の数と同じだけ「no error」(2つの注文を閉じた場合、「no error」は2回ポップアップするなど)、そして「money.wav」が聞こえる理由を教えていただけませんでしょうか?面白いのは、これがショートトレードの場合だけで、ロングトレードの場合はすべてうまくいくことです。何がトリックなのか、どうすれば直るのか、誰が知っているのか。
ブラケットって、クローズドならファーストの後じゃないの?
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum)
この線がなぜか落ちてくる。
RefreshRates();
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum
bool sellclose = OrderClose(OrderTicket(),OrderLots(),Ask,3,YellowGreen);
if (sellclose)
{
PlaySound("money.wav");
}
else
{
Print("Ошибка : ",Error(GetLastError()));
PlaySound("timeout.wav");
}
このデザインで、注文を閉じた後、最初に「timeout.wav」、閉じる注文の数と同じだけ「no error」(2つの注文を閉じた場合、「no error」は2回ポップアップするなど)が鳴り、その後「money.wav」が聞こえる理由を教えていただけませんでしょうか?面白いのは、これがショートトレードの場合だけで、ロングトレードの場合はすべてうまくいくことです。何がトリックなのか、どうすれば直るのか、誰が知っているのか。
最初の条件付き「if」演算子の条件は、それに続く次の演算子(次の行)にのみ影響します。
その他は、注文がクローズされることなく実行されます。 つまり、オーダーを閉じるコマンドがなくても、プレイサウンドのいずれかが動作します。
正しくはこうです。
最初のifの後に括弧が閉じていませんか?
if(OrderType()==OP_SELL && OrderMagicNumber()==mnum)
この線はなぜか閉じない。
Closes、これは私が偶然に削除された、そうでなければコンパイルされません、 if(OrderType()==OP_SELL && OrderMagicNumber()==mnum then falls out, but works trick on short and long transactions, and error "No error" with sound "timeout." msgstr "タイムアウト。wav "はショートトレードでのみ動作し、ロングトレードでは問題なく動作します、同じ括弧があり、すべて同じです