Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
bool CheckMoneyForTrade(string symb,double lots,ENUM_ORDER_TYPE type)
{
//--- получим цену открытияMqlTick mqltick;
SymbolInfoTick(symb,mqltick);
double price=mqltick.ask;
if(type==ORDER_TYPE_SELL)
price=mqltick.bid;
//--- значения необходимой и свободной маржиdouble margin,free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
//--- вызовем функцию проверкиif(!OrderCalcMargin(type,symb,lots,price,margin))
{
//--- что-то пошло не так, сообщим и вернем falsePrint("Error in ",__FUNCTION__," code=",GetLastError());
return(false);
}
//--- если не хватает средств на проведение операцииif(margin>free_margin)
{
//--- сообщим об ошибке и вернем falsePrint("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());
return(false);
}
//--- проверка прошла успешноreturn(true);
}
//--- вызовем функцию проверкиif(!OrderCalcMargin(type,symb,lots,price,margin))
{
//--- что-то пошло не так, сообщим и вернем falsePrint("Error in ",__FUNCTION__," code=",GetLastError());
return(false);
}
//--- если не хватает средств на проведение операцииif(margin>free_margin)
{
//--- сообщим об ошибке и вернем falsePrint("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());
return(false);
}
このような書き方をすることは勧めません。システムがアレイに必要な量のメモリを割り当てられなかった場合、プログラムは静かに実行され続け、予測不可能な結果を招くことになります。
このような書き方をすることは勧めません。システムがアレイに必要な量のメモリを割り当てられなかった場合、プログラムは静かに実行され続け、予測不可能な結果を招くことになります。
実際の取引では、私はこれを置かざるを得ません。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ライブラリ:HistoryTicks
fxsaber さん 2019.09.10 18:58
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
ライブラリ:HistoryTicks
fxsaber さん 2018.12.10 13:55
MT4/5のExpert Advisorの冒頭に以下の行を記述するとを実行すると、ArrayResize または ArrayCopy の実行時にエラーが発生した場合に、詳細な通知を受けることができます。
これにより、配列を介して情報を渡す際の特定しにくい問題を見ることができますが、さらに重要なのは、配列が範囲外 であるためにEAが停止したというメッセージを受け取ることです(EAのせいではありません)。例えば、メモリ不足などの不具合のため。つまり、数時間後に偶然気づくのではなく、EAの異常停止が 起こったことをすぐに知ることができるのです。
HistoryTicksライブラリはすでにこの行を含んでいます(追加する必要はありません)。なぜなら、ツールの主な目的は、実際のアカウントでExpert Advisorと戦うことだからです。
端末のジャーナルには、別のプロジェクトにそのような記録があるだけでした。
挿入された行のおかげで、何が起こったかの詳細をユーザーログで見ることができます。
MQL4の関数MarketInfo(asymbol, MODE_MARGIN_REQUIRED)のMQL5でのアナログを提案してください。
1Lotの買い付けを行うために必要な自由資金を 調達したいのですが。
MQL5のSymbolInfoDouble(symbol, ...)関数の様々なバリエーションを試しましたが、正しいバリエーションは見つからず、どこでも0を返します。
MQL4の関数MarketInfo(asymbol, MODE_MARGIN_REQUIRED)のMQL5でのアナログを提案してください。
1Lotの買い付けを行うために必要な自由資金を 調達したいのですが。
MQL5のSymbolInfoDouble(symbol, ...)関数の様々なバリエーションを試しましたが、正しいバリエーションは見つからず、どこでも0を返します。
https://www.mql5.com/ru/articles/2555#not_enough_money
https://www.mql5.com/ru/articles/2555#not_enough_money
すみません、なぜこのリンクが必要なのか分かりませんでした。そこには私の疑問に対する答えはありませんでした。
すみません、なぜこのリンクが必要なのか分かりませんでした。そこには私の疑問に対する答えはありませんでした。
具体的にどのような点が見えなかったのでしょうか?
チェックの例
MQL5
具体的にどのような点が見えなかったのでしょうか?
チェックの例
MQL5
購入するためには、1ロットの開設に必要な自由資金を得る 必要があります。
記事中のチェックは何か関係があるのでしょうか?
1区画を購入するための開設に必要な利用可能資金を得る必要が ある。
記事中のチェックは何か関係があるのでしょうか?
なぜなら、この記事は、資料を熱心に勉強することを教えてくれるからです。
この例では、取引注文を出す前に確認する機能まで完全網羅されています。
ひとつ。
とすぐにリファレンスを表示します。
アカウント・マージン・フリー
ポジションを建てるために利用可能な、預金通貨での口座内の自由資金の大きさ
AccountInfoDouble
と2が最小限のチェックです。
1区画を購入するための開設に必要な利用可能資金を得る必要が ある。
記事中のチェックは何か関係があるのでしょうか?
ショートコードを読むのに苦労するとは思わなかった、その後、ヘルプを読むhttps://www.mql5.com/ru/docs/trading/ordercalcmargin
記事では真面目に勉強することを教えている一方で
この例では、取引注文を送信する前にチェックする機能まで完全に提供されています。
ひとつ。
とすぐさまリファレンスに。
アカウント・マージン・フリー
ポジションを建てるために利用可能な、預金通貨による口座内の自由資金の大きさ
AccountInfoDouble
と2 - 最小限のチェック。
私が必要としないポジションを開くために利用可能な預金の通貨で口座内の自由資金のサイズ
ロットサイズを残高の%で計算しています。
1ロットの買い付けを開始するために必要な利用可能資金 量を知りたい のですが。