MQL5言語をゼロから独学で学ぶ - ページ 65

 
MrBrooklin:

ヴァレリーさん、こんにちは。ありがとうございました。「...マジックを使ったポジションとシンボルのポジションがゼロになったら、時間を確認してポジションを 開く...」が最も簡単で効果的であることがわかりました。time&& PositionTotal()==0を チェックする条件に追加したら、必要な金額のポジションが1つだけ開かれました

敬具 ウラジミール


残念ながら、MKLにはシンボル上の位置の 数を返すコマンドはない。TotalPosition は、口座上のすべてのシンボルのすべてのポジションを返します。したがって、シンボルのポジションを得るには、すべてのポジションを検索し、シンボルのポジションを私たちのものと比較する必要があります。

また頭出し時のロジックは、開いて自分の位置の存在を確認し、トリリングは常に最適とは限りません。時には、まずウィザードでポジションがオープンされているかどうかを確認し、オープンされていればクローズ時間を確認し、そうでなければトロールをし、オープン時間を確認する方が良い場合もあります。

EAアクションの回数を減らすことが目的です。

 
Valeriy Yastremskiy:

残念ながら、MKLにはシンボル上の位置の 数を返すコマンドがない。TotalPositions は、すべてのシンボル上のすべてのポジションを返します。したがって、あるシンボルのポジションを得るには、すべてのポジションを検索し、シンボルのポジションと私たちのポジションを比較する必要があります。

また頭出し時のロジックは、開いて自分の位置の存在を確認し、トリリングは常に最適とは限りません。時には、まずウィザードでポジションがオープンされているかどうかを確認し、オープンされていればクローズ時間を確認し、そうでなければトロールを行い、オープン時間を確認する方が良い場合もあります。

EAアクションの回数を減らすことが目的です。

すべてクリアだ、ヴァレリー!私はあなたのヒントを実行しようとしています。

敬具 ウラジミール

 
Valeriy Yastremskiy:

私たちのMagikとシンボルのポジションが0であれば、時間をチェックしてポジションを開き、1であればポジションを開かず、終値をチェックしてトロールし、1以上であれば警告して動作しないようにします。巻物やチェックイフを使うこともあります。

ヴァレリーさん、こんにちは。位置の列挙をしないコードを書いてみました。書いてみて、確認してみて、すべてうまくいきました。

   if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
   && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
      OpenBUY();
敬具 ウラジミール
 
MrBrooklin:

ヴァレリーさん、こんにちは。位置の列挙をしないコードを書いてみました。書いてみて、確認してみて、すべてうまくいきました。

ウラジミールさん、ありがとうございます。

とりあえずはいいんだけど、とりあえずはね。条件が厳しすぎる。もし、私たちのシンボルにポジションがなく、すべてのシンボルに私たちのマジックを使ったポジションがないのであれば、それは正常だと思われます。現実には、1つのシンボルに2つのウィンドウを開き、もう1つのシンボルにポジションを持つことがあるかもしれません。例えば、トリシキンのように、最初の3桁がシンボルコード、次の2桁がスクリプト/アドバイザーコードというように、Magikを使って簡単にアカウントを作成することができます。そして、まずは手動でコーディングするか、ウィンドウ記号とスクリプトコードによって行を追加して マジックを生成し、その行を数字に変換する。

古典的な方法は、すべての注文またはポジションを検索することです。

しかし、これでは初めのうちは無理があります。

だからこそ、最初からOKなのです。

 
Valeriy Yastremskiy:

から始めてもいいんです。条件が厳しすぎる。もし、私たちのシンボルにポジションがなく、すべての楽器に私たちのマジックを使ったポジションがないのであれば、それは正常だと思われます。現実には、1つのシンボルに2つのウィンドウを開き、もう1つのシンボルにポジションを持つことがあるかもしれません。例えば、トリシキンのように、最初の3桁がシンボルコード、次の2桁がスクリプト/アドバイザーコードというように、Magikを使って簡単にアカウントを作成することができます。そして、まずは手動でコーディングするか、ウィンドウ記号とスクリプトコードによって行を追加してマジックを生成し、その行を数字に変換する。

古典的な方法は、すべての注文またはポジションを検索することです。

しかし、これでは初めのうちは無理があります。

だからこそ、最初からOKなのです。

ヴァレリーさん、ありがとうございました。すべてのポジションを検索することは、私が必ず行う自己研鑽の次のステップの一つです。

ウラジミールさん、ありがとうございます。

 
Valeriy Yastremskiy:

なぜかすべての注文やポジションが古典的なオーバーランとみなされる。

残念ながら、これはMQLコミュニティの伝統で、すべてのEAは突然の接続切れやPCの停電を考慮して開発されています。

これは良い方法論なのですが、一方でEAのコードの書き方に大きな制約を与えています。 例えば、マーチンゲールを書く必要がある場合、EAは最後の注文を マスターで履歴 検索し、損益を見て新しいロットを増やすかどうか決めることになります。

...MTが出来てからというもの、みんなインターネットが無くなるのを待っていて、戦略そのものはあまり重要ではなくなってしまいました))

 
Igor Makanu:

残念ながら、これはMQLコミュニティの伝統で、すべてのEAは突然の接続切れやPCの電源断を想定して開発されています。

これは良い方法論である反面、EAのコードの書き方に大きな制約を課すことになります - EAは注文マスタでしか動作しません。 例えば、マーチンゲールを書く必要がある場合、EAはそのマスタで最後の注文を履歴 検索して利益/損失を見て、新しいロットを増やすかどうかを決定することになります

...MTが出来てからというもの、みんなインターネットが無くなるのを待っていて、戦略そのものがあまり重要ではなくなってしまったんです)

こんにちは、Igorさん。とても有用な情報を教えていただき、ありがとうございます。

敬具 ウラジミール

 
Igor Makanu:

残念ながら、これはMQLコミュニティの伝統で、すべてのEAは突然の接続切れやPCの電源断を想定して開発されています。

これは良い方法論である反面、EAのコードの書き方に大きな制約を課すことになります - EAは注文マスタでしか動作しません。 例えば、マーチンゲールを書く必要がある場合、EAはそのマスタで最後の注文を履歴 検索して利益/損失を見て、新しいロットを増やすかどうかを決定することになります

...MTが出来てからというもの、みんなインターネットが無くなるのを待っていて、戦略そのものがあまり重要でなくなってしまった))

火災、水害、バカに対する防御は常にあるべき!)普段はDTとの接続が切れた場合のストップにとどめています。

 

皆さん、ご機嫌いかがでしょうか?

プログラミング言語「MQL5」の勉強を続けています。MQL5リファレンスによると、for loop演算子について詳しい勉強を始めたので、引用します。

for ループ演算子

チェックする式が偽になるまで演算子を実行します。各反復の前に式がチェックされます


for ループ演算子の説明に行くと、そこにこう書いてある。

Оператор for состоит из трех выражений и выполняемого оператора:

for(выражение1; выражение2; выражение3) 
   оператор;

Выражение1 описывает инициализацию цикла. Выражение2 - проверка условия завершения цикла.
Если оно истинно, то выполняется оператор тела цикла for. Все повторяется, пока выражение2 не станет ложным. 
Если оно ложно, цикл заканчивается и управление передается следующему оператору. 
ВыражениеЗ вычисляется после каждой итерации.

Operatorは演算子を実行する?OKです。私は、すべてのオープンポジションを検索するために、for ループ演算子を取って開始し、必要な条件を指定してif 文を書きます。

   for(int i=PositionsTotal()-1; i>=0; i--)
     {
      if(PositionSelect(Symbol())==false && PositionGetInteger(POSITION_MAGIC)!=Magic_Number
         && time_current.hour==time_open.hour && time_current.min>=time_open.min && time_current.min<time_open1.min)
         OpenBUY();
     }

をクリックすると、何も起こらない。買いポジションは開きません。どう理解すればいいのでしょうか?私のやり方が悪いのか、for 文の項を全く正しく理解していないのか?

エキスパートへしかし、言葉ではなく、修正されたコードでもなく、 そうでなければ、私はMQL5プログラミング言語を学ぶことはできないでしょう。

敬具 ウラジミール
 
MrBrooklin:

皆さん、ご機嫌いかがでしょうか?

プログラミング言語「MQL5」の勉強を続けています。MQL5リファレンスによると、for loop演算子について詳しい勉強を始めたので、引用します。

for ループ演算子

チェックする式が偽になるまで演算子を実行します。各反復の前に式がチェックされます


for ループ演算子の説明に行くと、そこにこう書いてある。

Operatorは演算子を実行する?OKです。私は、すべてのオープンポジションを試すためにfor loop演算子を取って実行し、その後、必要な条件を含むif 文を入力します。

と言っても何も起きない。買いポジションは開きません。どう理解すればいいのでしょうか?私が何か間違っているか、for loop演算子の目的を全く正しく理解していないのでしょう?

スペシャリストの皆様へMQL5のプログラミング言語を習得することができないので、言葉ではなく、フィードバックをお願いします。

敬具 ウラジミール

ループ本体内のループ演算子および演算子。古典的なロシア語というわけでもない。

もちろんすべて順調なのですが、ループ本体のイテレータiはどこにあるのでしょうか?そして、ポジション文字とその魔法記号を得るためには、まずそれを選択する必要があります。ポジションの説明は構造体であり(MQL5ではすべてが構造体、注文、時間、取引)、ポジションチケットではなく、ポジション番号であるイテレータによって、選択によって記入されます。 そして、ポジション説明の構造体は常に最後の選択肢であることを忘れてはなりません。