bool Buy_opened=false; // переменные, в которых будет храниться информация bool Sell_opened=false; // о наличии соответствующих открытых позицийif(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{
Buy_opened=true; //это длинная позиция
}
elseif(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
Sell_opened=true; // это короткая позиция
}
}
bool Buy_Condition_1=...
bool Buy_Condition_2=...
bool Buy_Condition_3=...
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_SELL; // ордер на продажу // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
if(Buy_Condition_1 || Buy_Condition_2)
{
if(Buy_Condition_3)
{
// есть ли в данный момент открытая позиция на покупку?if(Buy_opened)
{
Alert("Уже есть позиция на покупку!!!");
return; // не добавлять к открытой позиции на покупку
}
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
return; // закрыл
}
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена bid
mrequest.sl = 0;
mrequest.tp = 0;
bool Buy_Close_1=....
bool Buy_Close_2=...
bool Buy_Close_3=...
if(Buy_Close_1 || Buy_Close_2)
{
if(Buy_Close_3)
{
// есть ли в данный момент открытая позиция на покупку?if(????)
{
Alert("Позицию на покупку закрываю!!!");
// Return убрал благодаря форуму ))
}
クライアント端末 / ストラテジーテスター / ストラテジーテスターの操作 / フォワードテスト
ありがとうございます。
はい、このリンクから。
http://www.metatrader5.com/ru/terminal/help/tester/tester_using/forward_testing。
2つ目の疑問の答えが見つかりました。しかし、1つ目と3つ目の質問には答えがありません。
私も欲しいです。
他のトレーダーの成績や比率を知りたい。私の結果が非常に憂慮すべきものであるように。私は、自動制御と非定常過程のモデリングの分野の科学者で、市場の値動きのグラフも含んでいます。私は長年にわたり非定常過程のモデル化を行ってきましたが、テスターの動作は私の長年の経験とは全く相容れないものです。ここがおかしい私がテスターの使い方を間違えているのか、それとも正常に動作していないのか、どちらかだと思います。一緒に探してみましょう。
最適化期間を厳密に追ったバックテストでは、同じパラメータで最適化時の200%の利益を示しています。しかし、他の最適化パラメータを選択し、最適化期間中にテストを行うと、数倍の利益を得ることができます。そんなことはないはずです。そのため、いくつか質問があります。
まあ、「できることは何でも」(C)と言われるように、自分次第ではありません。 話題そのものからかけ離れています。フォーラムを検索してみると、もしかしたらフォワードテストについてすでに議論されているところがあるかもしれません。また、そのトピックが非常に重要だと思う場合は、新しいテーマ別ブランチを作成します。そうでないと、質問が一般的なブランチに紛れてしまうからです。
端末内には参考資料もあります。F1.
非常に間抜けなことをした。
Custom Moving Averageインジケーターの本体を取り出し、中にMFIバッファを入れました。
価格を変更しました。
専門家として、ただの指標と確認するためのコメントとして、やってみました。
また、メッセージをありがとうございました。
クエスチョンマークの代わりに、PositionSelect(_Symbol)の値をtrueにしました。 これは役に立ちませんでした。
質問です。クローズ条件を設定できるようにするために、最低限変えられることは何ですか?Expert Advisor https://www.mql5.com/ru/articles/100 の記事では、ポジションを開く際の 条件については言及されていますが、ポジションを閉じる際の条件については言及されていません。
クエスチョンマークの代わりに、PositionSelect(_Symbol)の値をtrueにしました。 これは役に立ちませんでした。
質問です。クロージング条件を設定できるようにするには、最低限何を変更すればよいのでしょうか?Alertの後にリターンがあるんですね。ポジションはおそらく、このリターンのために閉じているわけではありません。一度取り上げて、再度お試しください。
しかし、クエスチョンマークの部分には別の疑問が生じた。
アルゴリズムについて
適切な条件+ポジションがない 場合-ポジションを開き、その他の条件+オープンポジション がある場合-オープンポジションを閉じます。
私が間違っていなければ - すなわちBuy_openedの 位置の存在
1の場合、アラートとリターン(最初に戻る)が発生し、0の場合、買い注文が開始されます。
質問です。EAがポジションを建てないようにするために、クエスチョンマークの代わりに何を書けばいいのでしょうか?(私の場合、売り注文 を立てています
この定義の条件はPositionSelect(_Symbol)に関連しているので、現時点ではBuy_openedも定義しています。
考えられる全ての論理的な選択肢を素早く試してテストすることが可能なので、質問に意味がないことは理解していますが、問題はテスターのバグでこれができないことで、実際にリアル取引モードのM1で診断する機会があります。
...
論理的に考えられる選択肢をすべて手早く試してテストできるので、質問に意味がないことは理解していますが、問題はテスターのバグでそれができないことで、実際にリアルトレードモードでM1で診断する機会があります。
質問の意味がよくわからないのですが。
また、テストを実行できないテスターのバグを発見したのでしょうか?
質問の意味がよくわからないのですが。
テストを実行できないテスターのバグは何ですか?
質問についてエキスパートアドバイザーにオープンポジションが あることを理解させ、注文を出さないようにするには、疑問符の代わりに何を書けばよいのでしょうか?
先に記述した、またはインジケーターブランチに記述した。MFIインジケータのハンドルを参照するDEMAがMFIウィンドウに表示されないため、Expert Advisorが動作しない。MA、AMAも同様です。質問についてクエスチョンマークの代わりに何を書けば、EAが
オープンポジションが あることを「認識」して、注文を出さないようにできるでしょうか!
ポジションがあり(PositionSelect(_Symbol))、他の条件をすべて満たした場合、ポジションをクローズします。例題のreturnが削除されない場合、条件は以下のようになるはずです。
というのは、ポジションがなければ終了するという意味です。終了しない場合、プログラムはこのブロックの後に来るコードを実行します。
しかし、私ならクロージングコンディションチェックの前に、ポジションの有無のチェックを入れます。