[アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. - ページ 30

 
AndrewX:

この機器にオープンポジションがあるかどうか、ポジションオープン条件での正しいチェックの設定方法をアドバイスください。また、シンボルのポジションがある場合(売りでも買いでも)、オープニングは行われず、そうでなければポジションを開くためのシグナルがトリガーされるのでしょうか?

以下はそのコードです(ポジションを開く役割を担っていると思われます)。

論理的には正しいようですが、1つのツールで複数のポーズを開いたままではうまくいきません。

P.S. 私はプログラマーではありません。ダミーにもっと詳しく説明することが可能であれば。


これは難しいことではありません。オーダーをカウントするサブプログラムを2つ編成するのがベストです。

// =================================================================================================
// ************************* Счётчики ордеров ******************************************************
// =================================================================================================


//=========== SchBuy()  ===============================
//  Функция возвращает количество Buy-ордеров
//   SchBuy      - счётчик Buy ордеров
//-----------------------------------------------------------
int SchBuy(int MAGIC){
  string SMB=Symbol();
  int SchBuy=0;
  int i;
  for (i=OrdersTotal()-1;i>=0;i--) {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
    else {
      if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGIC){ continue;}
      if(OrderType()==OP_BUY){ 
        SchBuy++;
      }  
    }
  }
  return(SchBuy);
}                  
//==================================================================================================


//=========== SchSell()  ===============================
//  Функция возвращает количество Sell-ордеров
//  SchSell  - счётчик Sell ордеров
//-----------------------------------------------------------
int SchSell(int MAGIC){
  string SMB=Symbol();
  int SchSell=0;
  int i;
  for (i=OrdersTotal()-1;i>=0;i--){
    if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордера № ",i);}
    else {
      if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC){ continue;} 
      if(OrderType()==OP_SELL){
        SchSell++;
      }
    }
  }
 return(SchSell);     
}                  
//==================================================================================================

さらに、コードそのものでは、prich:

if(SchBuy(MAGIC)+SchSell(MAGIC)<=0){
// ордеров нет - устанавливаем ордер при наличии торгового сигнала
}

MAGIC定数は、ユーザー変数で宣言する方が良い。こんな感じ。

extern int      MAGIC=467223; // У ордеров открытых вручную MAGIC=0
 

トライアル


if (NumberOfPositions(Symbol_1,-1,Magic)<1

все равно не пашет
 
drknn:


複雑なことではないんです。オーダーをカウントするサブプログラムを2つ編成するのがベストです。

次に、コードそのもので、prich:

MAGIC定数はユーザ変数で宣言した方が良い。こんな感じ。

ありがとう、見てみるよ、でも僕にはちょっと複雑かも。
 
AndrewX:
ありがとう、見てみるよ、でも僕にはちょっと複雑かも。

この投稿にEAファイルを添付しています。見てみてください。
ファイル:
 
おはようございます。最適化 しないことについての私の質問は、複雑で興味がないのかもしれませんね?
 
volshebnik:
おはようございます。最適化しないことについての私の質問は、複雑なのか、興味がないのか?

その理由はいろいろ考えられる。歴史がない」という些細なことから、「儲かる選択肢がない」という変則的なことまで。Expert Advisorのバグ
 

ロボットが保留中の注文を作成するかどうか教えてください。

保留中の注文のコマンドをサーバーに送信します。

キューに入れた注文は、端末に表示されますか?

手動で保留注文を設定 した場合と同じですか? 端末には、上に未決済注文、下に保留注文が表示されますか?

 
Jaguar1974:

ロボットが保留中の注文を作成するかどうか教えてください。

保留中の注文のコマンドをサーバーに送信します。

キューに入れた注文は、端末に表示されますか?

手動で注文待ちを設定した場合と同じですか?


キューに入れるとはどういう意味ですか?Expert Advisor は、サーバーに注文を送信し、保留中の注文を設定 します。この注文のパラメータが正しい場合、サーバーは保留中の注文を設定し、これが直ちにクライアント端末に表示されます。Expert Advisor があるステップで保留中の注文を出すと(ループで行われる)、それぞれの新しい注文がサーバで別々に処理されます。これらの注文はキューに入れられる - Expert Advisor が注文を出す - サーバーが応答する。Expert Advisorは再度注文を出し、サーバーからの返信を待っています。

オーダーキューイングとはどういう意味ですか?どういうことですか?

 
Vinin:

その理由はいろいろ考えられる。歴史がない」という些細なことから、「儲かる選択肢がない」という変則的なことまで。もっと単純に、Expert Advisorのエラーかもしれませんが。
調べてみると、1999年以降のExpert Advisorの履歴が載っています。すべてのバリエーションを確認しました(利益も出ていません)。МАパラメータを1つだけ、例えば100から110に設定すると、最適化は「死んで」しまい、結果もチャートも出ないのです...。他のパラメータを含めることは言うまでもありません。
 
volshebnik:
調べました。1999年からの議事録の履歴があります。すべてのバリアント(利益が出ていないものも)を表示するチェックボックスにチェックを入れました。最適化の際にMAパラメータを1つだけ、例えば100から110にすると、最適化が「死ぬ」 - 結果もチャートも出ない......。他のパラメータを含めることは言うまでもありません。

Expert Advisorを見なければならない。このままでは何も言えません