[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 917

 
_SS_:
関数を作成して呼び出すにはどうしたらよいですか?
教科書を 読む...:)
 

artemida70、S. Kovalevのチュートリアルを使って、最初のEAを組みました。その基準関数が損失を伴いながら機能することが判明した。私の基準関数を書きました。エラーがないか確認し、Expert Advisorをコンパイルしました。仕事の結果、手に入れたもの。

- 基準関数の場合:O - エラー、警告1件。

-Expert Advisorのコンパイルのために:О - エラー、О - 警告。

しかし、Strategy Testerでの作業は進まず、int init, int start, int deinitの関数にテストALERTSを入れました。Terminal から int init 関数に制御が渡され、int start 関数には制御が渡されないことが応答でわかります - 応答なし ALERT。EAがアンロードされると、intのdeinit関数からの応答がある。

この状況について、どうかアドバイスをお願いします。経験豊富なプロフェッショナルのアドバイスが必要です。

ありがとうございました

artmedia70:
チュートリアルを 読む...:)
 
artmedia70:
ここに奇妙な構造がありますね。端末の注文の標準的なループをやっているんですね。ゼロからOrdersTotal() -1まで。そして、ループ内の端末に注文が全くないことを確認するのです。チケットの注文を確認したらどうだろう?それともマジコン?そして、あなたのフラグはなぜか=0です。そして、なぜ偽らないのか?ただし、ボスはあなたです。あなたの理屈、わかってください...。:)

ありがとうございました)))まさにこの時点では:。ゼロからOrdersTotal()-1まで...それが、テスターが発注を継続しなかった理由です))))

この方式は、ある人の授業で習ったので使っています。もっと合理的な方法を記載していただけるとありがたいのですが))))

 

もうダメだ、1ヶ月近くmql4から抜け出せない、頭がおかしくなりそうだ、どうしたんだ?

私はそれで何をしようとしているのか、さっぱりわからない。

せめてヒントをください。

ログには何のエラーも出ていない。
 
extern double StopLoss=50.0;
extern double TakeProfit=50.
0;
extern double Lots=1;
extern int total;

int start()
{
double Price_1, Price_2, min, max;
RefreshRates();
Price_1=Bid;
Price_2=Ask;

min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
if(total<1)

if(Price_1>>) { max)
OrderSend(Symbol(,OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Ask+TakeProfit*Point, "My order#",16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+StopLoss*Point,Bid-TakeProfit*Point, "My order#",16384,0,Green);
} }.
}
return(0);
 
boris.45:

artemida70、S. Kovalevのチュートリアルを使って、最初のEAを組みました。その基準関数が損失を伴いながら機能することが判明した。私の基準関数を書きました。エラーがないか確認し、Expert Advisorをコンパイルしました。仕事の結果、手に入れたもの。

- 基準関数の場合:O - エラー、警告1件。

-Expert Advisorのコンパイルのために:О - エラー、О - 警告。

しかし、Strategy Testerでの作業は進まず、int init, int start, int deinitの関数にテストALERTSを入れました。Terminal から int init 関数に制御が渡され、int start 関数には制御が渡されないことが応答でわかります - 応答なし ALERT。EAがアンロードされると、intのdeinit関数からの応答がある。

この状況について、どうかアドバイスをお願いします。経験豊富なプロフェッショナルのアドバイスが必要です。

ありがとうございました


そこで何をしたのかを見てみたい......。:)
意味がわからない - ICの基準機能は損失で動作します。結局のところ、どんな関数も、開始条件を追跡すれば、正しく動作することもあれば、不正確に動作することもあり、したがって、エラーが発生することもあるのです。でも、戦略そのものは......負けることもあれば、儲かることもある......。クライテリア機能は、ストラテジーが設定したクライテリアを追跡し、トレーディング 機能にシグナルを送るだけである。
 
ViktorF:

ありがとうございました)))まさにこの時点では:。ゼロからOrdersTotal() -1まで...それが、テスターが発注を継続しなかった理由です))))

この方式は、ある人の授業で習ったので使っています。もっと合理的な方法を記載していただけるとありがたいです)))。

いろいろな方法があります。すべては、あなたが何を見つけたいかによるのです。

いずれにせよ、オーダーのループを開始することができます。

for (int i =0; i<OrdersTotal(); i++)

で、ループの中で何を見つけたいかを正確にチェックします。

if (OrderSelect(i, SELECT_BY_POS)) // 注文が選択されている場合(ここでは、デフォルトで選択されているので、MODE_TRADES関数パラメータを省略した)。

そして、-すでに必要な注文のパラメータを確認し、例えば、Magik

if (OrderMagicNumber()==Magic) // オーダーが与えられたマジックナンバーを持つ場合、...となると、必要なのはこの順番...

まあ...あるいはそのタイプは...。

if (OrderType()==OP_BUY || OrderType()==OP_SELL) //注文タイプが 買いか売りであれば...。

など

とはいえ、まったく別のやり方もできるのですが......。すべては、あなたの習慣と、コードの要件に依存します......。

 
gheka:

は動作するはずです。スマイリー・フェイスは微笑んでいるのでしょうか?
 

みなさん、こんにちは。私のExpert Advisorには、以下のようなコードがあります(下記参照)。私の理解では、ポジションを建てる ためのシグナルは、2つの指標の指標から取られます。CCIなどの1つの指標のみに基づいて注文を開くようにするにはどうすればよいでしょうか。ありがとうございました。

int getSignal() {
   int Momentum = checkMomentum();
   int CCI = checkCCI();
   if (Momentum != CCI) return (0);
   return (Momentum);
}
int checkCCI() {
   double CCI = iCCI(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("CCI: ", CCI);
   if (CCI > 0.0) return (1);
   if (CCI < 0.0) return (-1);
   return (0);
}

int checkMomentum() {
   double Momentum = iMomentum(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("Momentum ", Momentum);
   if (Momentum > 100 && Momentum < 101) return (1);
   if (Momentum < 100 && Momentum > 99) return (-1);
   return (0);
}
 

EAが利益に達したときにすべての注文を閉じないのですが、どうしたらいいですか?

void CloseAllOrders()
{
  for (int i = 0; i < OrdersTotal(); i++)
  {
    if (OrderSelect(i, SELECT_BY_POS))
    {
      if (OrdersTotal() > 1 && OrderSymbol() == Symbol() && AccountProfit() >= AccountBalance()*AllProfit/100)
      {
        if((OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)) OrderClose(OrderTicket(), OrderLots(),Bid,0);
        if((OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)) OrderClose(OrderTicket(), OrderLots(),Ask,0);
        if(UseSound == true)
        {
        PlaySound(SuccesSound);
        }        
      }
    }
  }
}