// в стандартной версии
total=OrdersTotal();
if(total<1){
// бла бла бла ...
// в моей версии эксперта
total=OrdersTotal(); // total я оставил т.к. он используется дальше
if(NumberOfOrders(NULL,-1,-1)<1){
// бла бла бла ... ну и плюс сама функция NumberOfOrders() ниже
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+doubleGetProfitFromDateInCurrency(stringsy="", intop=-1, intmn=-1, datetimedt=0){doublep=0;
inti, k=OrdersHistoryTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(dt<OrderCloseTime()){p+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}}}return(p);
}
MAです。投稿は24時間キープします~その後、削除します
削除する必要はありません!そのままでいい...
Igorさん、まず最初に、あなたの関数とこのブランチに感謝します、これらは多くの非専門のプログラマーを助けてくれます。でも、NumberOfOrders()関数について質問したいのです。うまく動作させることができないそれを標準のMACD Expert Advisorに落とし込んで、使い方の一例を示しています。コードを貼り付けています。
簡単に説明すると、そこが変わったということです。
当然ながら、うまくいきません。何が問題なのか、説明していただけますか?ありがとうございました。何が問題なのか説明してください。ありがとうございました。
2つのコメント
1.私ならこうします。
2.関数NumberOfOrders() は、注文数 - BuyLimit、BuyStop、SellLimit、SellStop タイプの取引数 を返します。変更したExpert Advisorは、注文に対応しません。市場価格でポジションを建てる、つまり買いと売りの取引を 行います。次回の記事で紹介するNumberOfPositions() 関数を使用する必要があるのです。NumberOfPositions()関数です。
この関数は、現在オープンしているポジションの数を返します。より正確なカウント位置の選択は、外部パラメータで指定します。
うわー!デザインかと思った。
は、すべてのポジション(OP_SELLとOP_BUYを含む)を通過することになります。今はすべてうまくいっています。いつもありがとうございます。GetProfitFromDateInCurrency()関数を使用します。
この関数は、ある日付以降に決済されたポジションの通貨建ての利益の合計を返します。考慮すべき位置をより正確に選択するために、外部パラメータを使用して指定します。
HH. 関数GetProfitFromDateInCurrency()をテストするためのスクリプトを添付します。
この機能の使い方をより実践的に学べるのが、期間別の利益の絶対値やパーセントを表示する「i-Profit」です。
イゴールさん、こんにちは。
相関図にお礼を言いたい。 選択肢があったので、それをはっきりさせたかった)
私もそんな疑問を持っています。リアルタイムモードでExpert Advisorを テストしていると、よくエラー130 - wrong stopに遭遇します。私はそれを分析しない、ある状況下でなぜそれが発生するのか理解しない。この構造を使うようになったのは
この構成でストップとTPを正規化するようになったのですが、解決には至りませんでした。同じような状況に直面したことがあるかもしれないので、その対処法や分析方法を教えてください。
はっきり言うと、始値から+1pのところにストップを設定しようとすると、この現象がよく起こります。
encounter error 131 - Incorrect stop.
131- 体積が正しくない、体積造粒のエラー。取引されるロットの大きさです。
error 131 - Wrong stop に遭遇しました。
131- 音量が正しくありません。音量の造粒に誤りがあります。取引されるロットの大きさです。
131ではなく、130です。
コードが違います、131ではありません、130です。
なるほど...。
以下のように正規化してみてください。
そうすると、エラー130が 発生しないのです。