どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 63

 
FAQ:


なるほど、ではもっと質問を。

iTime 機能でキャンドルのオープンタイムを制御する必要があります。

この関数でローソク足のオープンタイムを制御してみました:iTime

15時のローソク足で注文が始まる......が、15時のローソク足は1本目でないことが多い。

その前に、先のローソク足がすでに1.3000に接触していた。

そして、1.3000を越えた15時のローソク足の前であることが必要だ。

ありがとうございます。

 
新人がガチギレすることも...。プログラミングは直線的なものなので、一本の線で条件を考えてみてください。
 
FAQ:
初心者がつまずくことも...。プログラミングは直線的なものなので、一本の線で条件を考えてみてください。

私の考えを図式化してお伝えしましょう。

http://clip2net.com/s/5vbxUK

そして、このアイデアを1行にまとめるとどうなるか?

ありがとうございます。
 
このように、プログラムが分析します。
 
FAQ:
というように分析するのです。

すみません-意図がよくわからないのですが。

コード形式でどのように見えるか書いていただけるとありがたいのですが...。

ありがとうございます。

 
solnce600:

皆さん、こんにちは。

このようなアイデアをどのようにコーディングすればよいのか、どなたか教えていただけると幸いです。


グラフ TF 5

現時点でのビッドは1.3150

1.3000という価格水準があります。

価格が下がる。

====================================

//1 .3000を越えたら

// 価格が最初に 1.3000を越えた場合。

// 1.3000を 超えた のが 15時間 以内の 場合(15:00,15:05...15:55など)


// 取引を開始する。

===================================

ありがとうございます。



これは完全な実装を伴わない単なるアイデアです。

extern double crossLevel = 1.                       3;extern int hour = 15;int start(){    static int cross = 0;    if (TimeHour(TimeCurrent()) == hour) {// candle correspond to hour        if (isCrossPrice(crossLevel, Bid) {/ level cross let Bid            cross++;            if (cross == 1) {// first cross level                ifxml-ph// open order - implement yourself                    cross = 0;                }            }        }    }bool isCrossPrice(double level, double price){    bool res = false;    static double prev = 0;    if (prev > 0) {        if ((prev <= level && price > level) || // cross level up            (prev >= level && price < level)) { // cross level down            res = true;        }    }    prev = price;    return(res;})
 
keekkenen:

焼け石に水


ありがとうございました。
 
solnce600:


すみません-意図がよくわからないのですが。

コード形式でどのように見えるか書いていただけるとありがたいのですが...。

ありがとうございます。


コードまではまだ遠い、原理、アルゴリズムを理解しなければならない。
 

2日前から悩んでいて、わからないんです。過去n本のバーの最安値を求める必要がありますが、現在のバーからではなく、関数を通して受け取ったバーからです。この関数は、注文が開始されたバーのインデックスを返します。このバーから、n本のバーの履歴をさかのぼって、最安値を探す必要があります。以下は私のコードですが、どこが悪いのでしょうか?

 double low_price_n_bar()
 {
   
   double low_bar=100000, index_bar;
   
   for (int i=time_orders; i<=count_bar; i++) //time_orders индекс бара получаемого из функции, count_bars внешняя переменная количество баров для сдвига назад по истории
   {
    index_bar= ND(iLow(Symbol(),0,i));
    if (index_bar<low_bar)
    {
      low_bar=index_bar;     
    }
   
   }
   return(low_bar);
 }
 

フォーラムユーザーの皆様、大変お世話になります。


if (TimeBar==Time[0]) return(0); double MA1 =


NormalizeDouble(iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits); // ここで0は現在のバーから指定した分だけシフトしていることを示します。period back の数 //double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits);double MA2 = NormalizeDouble(iMA(NULL,timeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits); //double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits)double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits); double OsMA = NormalizeDouble(iOsMA(NULL,TimeFrame_5,FastEMA_5,SlowEMA_5,SignalSMA_5,Applied_Price_5,0),Digits)if (MaxOrders>b && Low[0]>=MathMax(MA1,MA2)&& Low[0]>MA3 && Ask>)MathMax(MA1,MA2)+DeltaOpen*Point && Ask>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Trade){ if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Blue) ==-1) TimeBar=0; else TimeBar=Time[0]; } }.if (MaxOrders>s && High[0]<=MathMin(MA1,MA2) && High[0]<MA3 && Bid<)MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Trade){ if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Red) ==-1) TimeBar=0; else TimeBar=Time[0]; } }.


















return(0)です。


この状態で、Expert Advisorは、例えば、SELLで取引を開始し、利益が出たらそれを決済し、すぐにSELLで別の取引を開始します。シグナルを受信したら、1つの取引を開始する、つまり1シグナル1ディールをEAで規定するにはどうしたらよいでしょうか。
あらかじめご了承ください。