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

 
obla4ko:
棒のように考えてはいけない - それは非常に微妙なものです :)), 仮想、と言うのは、歴史の中で詐欺に自然に反応するはずです。消去に反応しないのであれば、実生活でどれだけ遅いか想像がつきます。10Kで年間100ポンド、せいぜい...です。まあ、銀行に預けておく方が簡単ですからね。3〜6パーセントの還元率ですから!)

)))もちろん、もっと簡単です誰が言うんだ...// そして、誰が簡単だと言いましたか?)))

一つの方法として、証券取引所に行くことです。こういうくだらないことは、基本的にそこでは起きないんです。しかし、このように...なんというか......その......。...FXにも取り組める奇策。

もちろん、一番良い方法は、実際のアカウントでテストすることです。Expert Advisorで定められた原則が正しい場合(これはテスターで正確にチェックできます)、実際の口座に不可抗力の措置を講じると、取引は良好+になります。テスターのような++++のところではないかもしれませんが、それでも...))

ちなみに、指標を狂わせる隙間を見積もりフローからカットすることは、とても有効です。私のコード - Kill Gapで見ることができます。

 

Techno:
obla4ko, создайте переменную типа datetime x, и пусть это будет время открытие бара, на котором произошел стоплосс. А в условии открытия поставте, что (Time[0]!=x). При этом x должно обновляться при новом сработавшем стоплосе. Это первый вариант. И второй как я уже в третий раз пишу, после срабатывания стопа включить ожидание 1 бар, это будет совершенно тоже самое, не логично разве?

前回の投稿でポジションをオープンするコードの部分を掲載しました。ここでおっしゃったことを、ぜひ作品に反映させてください。"転ばぬ先の杖 "という言葉がありますが、まさにその通りです。)
 

こんにちは!!!

このスレッドの71ページ目に、granit77さんがとても興味深いことを書かれていますよ。

Извините, что встреваю, поделюсь ламерским способом удобной записи множества условий. При наладке легко добавлять/убирать, не заботясь о скобках, и все наглядно. 
if (true
    && StochK_0<StochD_1
    && StochD_1 > 80 
    && cci_0 < cci_1    
    && cci_0 > 100 
    //&& .... а это я пока убрал     
   )

サンプルはこちらです。

if(((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N)))
// это основа
if(true
      &&Sto_0>Sto_1&&Sto_0< 20
      &&OsMA_0>OsMA_1&&OsMA_0<-P
      &&Macd_0>Macd_1&&Macd_0<-N
      )//а это то что получилось

珍しいから聞いているのですが......。

 

なぜこれが機能し、変数の値を10%増やすことを正しく数えることができるのでしょう。

TStartS = MathRound(TStartS+TStartS*0.1);

...が、これはそうではない。

TStartS = MathRound(TStartS+TStartS/100*PercentTakePr); // где PercentTakePr - внешняя переменная, равна 10, 20, 30, и т.д. ...
何が違うんだろう、わからない...。
 
artmedia70:

なぜこれが機能し、変数の値を10%増やすことを正しく数えることができるのでしょう。

...が、これはそうではない。

何が違うんだろう、わからない......。





とか、こんな感じでしょうか。

TStartS = MathRound(TStartS+(TStartS/100*PercentTakePr)); 
 

何が問題なのか?内容を変えずに、文字列を部分文字列に分割すればいいのです。すべて同じように動作しますが、不要な行をコメントするだけで読みやすく、編集しやすくなります。

プロは昔からこの方法で書いていて、フォーマットまで良くしていることがわかったので、自転車を発明したのです。:))

if (true              &&
    StochK_0<StochD_1 && 
    StochD_1 > 80     &&  
    && cci_0 < cci_1  &&   
    && cci_0 > 100 
   )

//((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N))
// Ваш вариант вот так будет выглядеть наиболее прозрачно, на мой взгляд
if (true                         &&
    (Sto_0 >Sto_1  && Sto_0 <20) &&
    (OsMA_0>OsMA_1 && OsMA_0<-P) &&
    (Macd_0>Macd_1 && Macd_0<-N)  
   ) 
 
artmedia70:

なぜこれが機能し、変数の値を10%増やすことを正しく数えることができるのでしょう。

...が、これはそうではない。

何が違うんだろう......よくわからない......。





0.1がdouble、100がintです。

教科書で型変換を 調べよう

 
Svinozavr:

0.1がdouble、100がintです。

教科書で型変換を調べる。

だから、私はそこにすべての変数を持っているint...ということが判明しました。痛っいい加減にしろ掘り進む...

そういうことなんです。

LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr);
...で、ここに別の同じ型の変数を突っ込むと、うまくいかない...。朝から頭が真っ白になりました...。
 
obla4ko:

前回の投稿でポジションをオープンするコードの部分を掲載しました。ここでおっしゃったことを、ぜひ作品に反映させてください。"転ばぬ先の杖 "という言葉がありますが、まさにその通りです。)

以下は回路図です。確認はしていませんが、動作するはずです。足りない部分は、元のコードから追加する必要があります。赤のマークは、変更すると待ち時間が増える番号で、数字の2は、1本のロウソクが待っていることを意味します。2本のキャンドルが必要な場合は3本を置くなど、待ち時間が発生します。

bool work=1;int tick;datetime t;
int start()
{
  if(!work){if(t!=iTime(NULL,0,1)){t=iTime(NULL,0,1);tick++;}}
  if(tick==2){work=1;tick=0;} 
   
   time();
   if(OrdersTotal()==0)CheckForOpen();
  //-- code
}
//----
void CheckForOpen()
{
   double ma;
   int    res;
    
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

   if(work && Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+Stoploss*Point,Bid-Takeprofit*Point,"",MAGICMA,0,Red);
      return;
     }

   if(work && Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-Stoploss*Point,Ask+Takeprofit*Point,"",MAGICMA,0,Blue);
      return;
     }

}
//----
void time()
{
static datetime time;
    
  if(OrdersHistoryTotal()==0)return;
  for(int i=0;i<OrdersHistoryTotal();i++)
       {
       OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
         if(OrderCloseTime()>time && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
            {
            time=OrderCloseTime();
            if(OrderProfit()<0)work=0;
            }
       }    
   
}
 
artmedia70:

だから、私はそこにすべての変数を持っているint...ということが判明しました。痛っいい加減にしろ掘り進む...

これは効きますね。

...しかし、同じ型の別の変数を差し込むだけでは、うまくいきません...。今朝は吹っ切れました...。


それは...見つけたんだ...100ではなく、100.0です。殺してやる...