[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 403

 
mersi:
履歴をダウンロードすると、疑問が解消される

ダウンロードの方法を教えてください。
 
kolyango:

正しく理解しています。

具体的な実装は、お客様の条件と非常に密接に関係しています。

フラグとは、簡単に言えば、状態が格納される変数のことです。大雑把に言うと、上げたり下げたりできる。それをベースに、自分のロジックを実行する。

 
w_ersoc:

Expert Advisorが指定された時間枠で新しいバーを開くと1回トリガーする正しい条件を書く方法を教えてください。:(

さまざまなバリエーションを考え出すと、このような条件を使うことが多いですね。

int start()
static datetime dtBar;
//.................
if(Time[0]==dtBar) return(0);//…проверим открытие новой свечи
dtBar=Time[0]; //(тот же Бар-возврат)(новый-продолжение...)
// 
 
splxgf:

具体的な実装は、お客様の条件と非常に密接に関係しています。

フラグとは、簡単に言えば、条件が格納される変数のことです。大雑把に言うと、上げたり下げたりできる。それをベースに、自分のロジックを実装していく。


さて、ポイントは押さえたでしょうか?

正しく理解しています。

1. 条件1が満たされた場合、Flag_SSSR1 に真値が代入され、直ちに条件2のチェックを開始する。

2. 条件2が満たされた場合,Flag_CCP2に真値が代入され,満たされない場合は偽フラグとなり,次のティックで

条件1をチェックせずに条件2へ進み、条件2が成立して真値を取るまで繰り返す。

3. 次に、condition3 と Flag_USSR2 をチェックする(USSR2 のどこが true か false かをチェックするのか、具体的には?)

これでよいのでしょうか?テスターにトランザクションが1つもない...。正しいことならあるはずですが。どうしたんですか......?

static bool Val_max, Cl_dn, Val_min; //static or global
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int
   i, j, total,
   cnt,
   OrderBuy,
   OrderSell,
   Magic,
   Ticket,                                      // Номер ордера
   Total=0,                                     // Количество ордеров в окне
   Tip=-1;                                      // Тип выбран. ордера (B=0,S=1)      
   double
   Open_0,
   ask,
   bid,
   Price,                                       // Цена выбранного ордера
   SL,                                          // SL выбранного ордера
   TP,                                          // TP выбранного ордера
   Lot;                                         // Колич. лотов в выбран.ордере
   Open_0=Open[0];                             // Цена откр. формирующегося бара
   ask=Ask;                                    // Текущая цена покупки
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb;                                        // Название финанс. инструмента
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1= Open[1];
double Close_1= Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
if (Val >= Value_max) Val_max=true;                  // 
if (Open_1 > Close_1) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }

   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
 

こんにちは。

同時保有ポジションを 1つに絞ることを目標にしました。

Open/Close level = 3/2 × Point という変数を開閉位置に配置し、この課題を解決しようとしたが、うまくいかなかった。

解決するために、ご協力お願いします :)

 
kolyango:


これは正しいことなのでしょうか?テスターにトランザクションが1つもない...。正しいことならあるはずですが。どうしたんだ......?

さて、条件をもう一度普通の言葉で全部書き出すと、コードの修正ができるのですが...。シグナルの良いところは、有効期限とキャンセルがあることです。
 
skyjet:

こんにちは。

同時に保有するポジションを1つに絞ることを目標にしました。

if(OrdersTotal()>0) return;

あるいは、シンボルを使って、保留中の注文を放り出すバリエーション。

 

すなわち、私のバージョンでは

if(OrdersTotal()>1)return。

?

 
splxgf:
さて、もう一度条件を全部普通の言葉で書き出すと、コードを修正することができます...。シグナルの良いところは、有効期限と解約期限があることです。

これらの条件が一度に揃うとは限らないので(1時間後、2時間後、3時間後)、1.0000になったらすぐに、この条件を毎ティックチェックせず、1本が下落で閉じるまで待ち、その後、この2条件を毎ティックチェックせず、0.9980以下になるまで待ち、というようにすることが必要です。すべての条件が満たされ次第、0.1ロットの売り注文 を成行で出し、損切りは400ペンス、利食いは400ペンスとします。
 
skyjet:

すなわち、私のバージョンでは

if(OrdersTotal()>1)return。

?

最初のオプションは、注文を開く前に配置することをお勧めします。