//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru/ |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int NumberOfPositions(string sy="",int op=-1,int mn=-1){int i, k=OrdersTotal(), kp=0;if( sy=="0") sy=Symbol();for( i=0; i< k; i++){if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){if(OrderSymbol()== sy || sy==""){if(OrderType()==OP_BUY||OrderType()==OP_SELL){if( op<0||OrderType()== op){if( mn<0||OrderMagicNumber()== mn) kp++;}}}}}return( kp);}
使用例:この関数をコードの一番最後に置き、ポジションを建てるときにチェックします。
if( NumberOfPositions(NULL,OP_BUY, Magic)<1){// если нет окрытых OP_BUY позиций с заданным магиком, покупаем
ticket=OrderSend(Symbol(),0, Lots,Ask, Slippage,Bid- SL*Point,Ask+ TP*Point,NULL, Magic ,0,Blue);}
bool Open_Buy(){bool res=false;if( условие_1){if( NumberOfPositions(NULL, Magic)<1)// если нет открытых позиций с заданным магиком{ res=true;}}else{if( условие_1){if( NumberOfPositions(NULL, Magic)>1)// если советник уже открывал позиции{if( условие_2){
res=true;}}}}return( res);}
という疑問があります。
Open[1] < Close[1]となり、 Open[1]-Close[1] を引くとマイナスで値が出る場合、マイナスなしで値を得る方法、常に正の値にする方法、 Openと Close 間の距離を計算する必要がありますが、他の方法はないでしょうか。
ありがとうございます。
という疑問があります。
Open[1] < Close[1]となり、Open[1]-Close[1]を引くとマイナスで値が出る場合、マイナスなしで値を得る方法、常に正の値にする方法、OpenとClose間の距離を計算する必要がありますが、他の方法はないでしょうか。
>> ありがとうございました。
https://docs.mql4.com/ru/math/MathAbs
https://docs.mql4.com/ru/math/MathAbs
;)>> ありがとうございました
ごきげんよう。
MT4用のEAを作成 する際、このEAの少なくとも1つの注文がオープンされたかどうかをプログラム的に(つまりEA自体のコードで)判断する必要があります。そのような機能があるかどうか、教えてください。おそらく、あるとすれば、次のようなものでしょう。
ブール値(このマジックナンバーのEAオーダーがオープンされているかどうか)
{答え= True/False}。
?
専門家の方々へ - 助けてください - すでに頭を悩ませています。
P.S.- 注文番号のオプションを試しましたが、うまくいきませんでした。
ごきげんよう。
MT4用のEAを作成する際、このEAの少なくとも1つの注文がオープンされたかどうかをプログラム的に(つまりEA自体のコードで)判断する必要がありました。そのような機能があるかどうか、ご存じですか?
この機能は使えるのでしょうか?
使用例:この関数をコードの一番最後に置き、ポジションを建てるときにチェックします。
もし、ポジションを探すのではなく、保留中の注文を探すのであれば、以下の関数を使用することができます。
関数 NumberOfOrders()。
この関数は、注文数を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。
sy - 楽器の名前です。このパラメータを設定すると、この関数は指定された商品の注文のみをチェックします。NULLは現在の計測器、""(デフォルト)は任意の計測器を意味する。
op - 保留注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。初期値の-1は任意の順序を意味する。
mn - オーダー識別子(MagicNumber)。初期値の-1は任意のMagicNumberを意味する。
https://www.mql5.com/ru/forum/107476/page12
ファイルの提供内容を説明してください。
できれば、何か簡単な方法で。
ありがとうございます。
ファイルの提供内容を説明してください。
できれば、何か簡単な方法で。
ありがとうございます。
ライブラリファイルが「宣言」されていれば、宣言されたファイルの関数を、あたかもソースに含まれているかのように使用することができる。
このファイルから何がわかるのか、説明してください。
できれば、シンプルにお願いします。
ありがとうございます。
これらのファイル(すでにmt4に初期組み込まれている)から関数を使用する(呼び出す)とき、我々は、EAの不正な動作の場合には、コードで行ったエラーの番号をログで見ることができます.
例えば、GetLastError()関数を呼び出すとします。
この場合、コードに誤りがあったり、外部パラメータの設定が間違っていたりすると、ログにそのエラーの番号が表示されます。
例えば、130。
そして、その番号の解読は、-https://book.mql4.com/ru/appendix/errors。
しかも、どこに間違いがあるのかがすでに分かっているので、コード全体を調べる必要はないのです
この機能は使えるのでしょうか?
使用例:関数自体をコードの一番最後(START関数の外)に置き、ポジションを開くときにチェックする。
もし、ポジションを探すのではなく、保留中の注文を探すのであれば
関数NumberOfOrders()。
この関数は、注文数を返します。関数のパラメータを使用して、チェックする注文のリストを制限することができます。
sy - 楽器の名称。このパラメータを指定すると、指定した商品の注文のみをチェックします。NULLは現在の計測器、""(デフォルト)は任意の計測器を意味する。
op - 保留注文の種類。有効な値:OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELLSTOP、または-1。デフォルトの値である-1は、任意の順序を示す。
mn - オーダー識別子(MagicNumber)。デフォルト値 -1 は任意のMagicNumberを意味する。
https://www.mql5.com/ru/forum/107476/page12
ありがとうございます。
もし、売りまたは買いの条件があり、注文をオープンまたはクローズしていないことを確認したい場合、この場合、最初の条件のみが機能します。 また、EAが過去に注文を出したことがあれば、注文が出されたときに、1つ目の条件+2つ目の条件が発動されるはずです。
いただいたリンクに目を通しましたが、もしかしたらExistOrders(); の方が適しているのでしょうか?
(が、どうやら当分スキルがないようなので、正直言って配置できませんでした)。
関数を正しく呼び出していない。
この関数は次のように呼び出されます: if (NumberOfPositions(NULL,Magic)> 1)
このように表示されるはずです。
違いを感じてください("-1 "が省略されています)!そして、コードを受け取ってください。
それを制御するために、チャートにコメントを印刷することができます。例えば、こんな感じ(START関数の冒頭)。
2つ目の条件については、私なら(「難しく考えずに」)別のマジシャンと別の関数Open_Buy_2()を設定して、2つ目の条件によってポジションをオープン します!2番目の条件のコードは次のようになります。