インジケーターからデータを取得する方法は? - ページ 6

 
Retabs:


自分で訂正しておきます。すでにSRCボタンからコードを 挿入しています。

では、あなたが書いたように、ルールに従って挿入 されているのであれば、なぜ私のコードを削除したのでしょうか?


なぜなら、あなたは自分のコードをルールに従って貼り付けたものを提供しなければならないのであって、私のあなたのものではないからです今、家に帰ってから削除しました
 
borilunad:

なぜなら、あなたは自分のコードをルールに従って貼り付けたものを提供しなければならないのであって、私のあなたのものではないからです今、家に帰ってから削除しました


アドバイスをお願いします。インジケーターラインが 再交差 したとき、つまりval1がval2と等しくならないときにのみ新しい 取引を開始できるようにするにはどうすればよいですか?(上記のコード)。ループで?

 
Retabs:


アドバイスをお願いします。別の取引が終了するまで、ある取引の開始を制限するにはどうすればよいですか?(上記のコード)。


オープンする前に、ポジションがなければオープンしてもいいという条件をつけてください

様々な機能がありますが、それらを探りつつ、あらゆるシーンで活躍するスタンバイを1つ提案します

if(OrderTotal() == 0)
{
  // потом остальные условия, чтобы зря не производить расчёты,
  // если пока ещё есть открытая позиция. 
  // Если понадобится открывать больше позиций, тогда проставите
  // допустимый максимум, например, 3 позиции:
if(OrderTotal() < 3)
{
  // Всё это не ленитесь находить в Документации! Замечено, что 
  // если находите сами и сами делаете, тогда ваши знания и навыки
  // будут крепкими!
  
 
<br /> translate="no">。
ボリルナド

なぜなら、あなたは自分のコードをルールに従って貼り付けたものを提供しなければならないのであって、私のあなたのものではないからです今、家に帰ってから削除しました

ありがとうございます。 条件を見直すと、自分が望んでいることがうまく伝わっていないことに気づきました。申し訳ございません。

教えていただけませんか。 指標線が 再交差 したとき、つまり val1がval2と等しくならない ときにのみ新しい 取引を開始 できるようにするにはどうしたら いいですか?(上記のコード)。2つのクロスオーバーの間に、その時点で開いた過去の取引の数に関係なく、そしてもちろんそれらに触れることなく、1つの取引のみを許可すること。

交差中に値が変化するマーカーとして新しい変数を追加してみましたが、何もうまくいきませんでした。

取引成立の瞬間をとらえ、マーカーを元の価値に戻すしかないと思います。

 
Retabs:


アドバイスをお願いします。指標線が 再交差 したとき、つまりval1がval2と等しくならないときにのみ新規 取引を行うようにするにはどうしたらよいでしょうか。(上記のコード)。ループしているのでしょうか?


私が書いている間に、「私に書いてほしい!」という条件が追加されました。ここは、自分で必要なものを見つけて書き、ドキュメントを見ながら、時系列 チャート、バー・キャンドル、そして、すべてをわかりやすく説明しているセルゲイ・コバレフのチュートリアルの勉強に深入りするしかないでしょう!?

だから、時間を無駄にせず、勉強に取りかかれば、結果はついてくるのですなぜなら、プロが書いたEAでさえ、常にベビーシッターが必要で、それがないと、いつでも不機嫌になり、市場の習慣が頻繁に変わるため、稼げなくなるからです。だからこそ、常に新しい解決策を探し、実験し、戦略を少し、あるいは大きく変えるべきなのです。自分がやったことを知ることは、他の人のことを理解するよりずっと簡単なのです頑張ってください。

 
borilunad:


私が書いている間に、「私に書いてほしい!」という条件が追加されました。ここは、自分で必要なものを探して書き、ドキュメントを見ながら、時系列 チャート、バー・キャンドル、そして、全てを分かりやすく説明してくれるSergey Kovalev氏のTutorialを深く勉強して行くしかないでしょう!

だから、時間を無駄にせず、教えることに挑戦し、結果を出すのですなぜなら、プロが書いたEAでさえ、常にベビーシッターが必要で、それがないと、いつでも不機嫌になり、市場の習慣が頻繁に変化するため、稼げなくなるからです。だからこそ、常に新しい解決策を探し、実験し、戦略を少し、あるいは大きく変えるべきなのです。自分がやったことを知ることは、他の人のことを理解するよりずっと簡単なのです頑張ってください。


OKです。参考にすることをあきらめてはいません。取引が行われた瞬間をとらえ、マーカーを元の 値に戻す」ためには、どの方向に掘ればいいのか、教えてください。
 
Retabs:

わかりました。証明書の発行はあきらめない。"トレードが行われた瞬間をとらえ、マーカーを元の 価値に戻す" ためには、どの方向に掘り下げればいいのか教えてください。


時系列 in Documentation, バー・スライド ・オン・チャート!そして、その過程で、とても便利で役立つことをたくさん学ぶことができるのですチュートリアルも!

そして、それは1日や2日の学習のためではなく、数ヶ月、数年、本当に知りたい、方法を知りたいと思うのであれば、生涯のことなのです。がんばってください。

 
_new-rena:

最後に

130の誤差は、ストップ高とテイクオーバーによるものです。トリガーとなるべき価格水準があるはずです。(確かに価格レートが-100や60を待っているわけではなく、例えば価格-100*ポイントや価格+60*ポイントのようにする必要があります)


アドバイスをお願いします。 インジケーターの線が 再交差 した とき 、つまりval1がval2と等しくなくなった後にのみ新しい 取引を開始 できるようにするには ?2つのクロス間で1回だけ取引できるようにし、その時点で開いている前の取引の数には依存せず、もちろんそれらに触れないようにする。

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=60;
input int   TakeProfit=100;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   
   if(val1>val2)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val1<val2)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
//+------------------------------------------------------------------+
 
Retabs:


アドバイスをお願いします。 指標となる線が 再び 交差したとき、つまりval1がval2と等しくなくなった後にのみ新規 取引を開始 できるようにするにはどうしたらよいでしょうか。 2つのクロス間で1回だけ取引できるようにし、その時点で開いている前の取引の数には依存せず、もちろんそれらに触れないようにする。

このように
void OnTick()
  {
//---
   double val10=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val20=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);

   double val11=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,1);
   double val21=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,1);
   
   if(val11 < val21 && val10>=val20)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val11 > val21 && val10<=val20)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
 

ご返信ありがとうございました。ちょうど今、私自身も解決策を考え出したところですが、原理は違います。私のものとあなたのものを試しましたが、正しいようです。

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=100;
input int   TakeProfit=160;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
int    X=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   

   if (X>0 && val1==val2)
   Ctrl=0;
   
   
    if (X==0  )
      {
      if(val1>val2)
      OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
      Ctrl=Ctrl+1;
      }
      
    if (X==0 ) 
    
      {if(val1<val2)
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
      X=X+1;
      }
   
  }
//+------------------------------------------------------------------+

しかし、ここで問題なのは、視覚的なクロスオーバーポイントでは、実際には線が複数回クロスしているため、シグナルが複数回受信され、Expert Advisorは4~30回の注文を出す時間があることです。

この欠点を解消しなければならないのです。私が考案したのは、過去の測定値を平均化し、現在の測定値と比較することだけです。論理的にはそうです。しかし、それをプログラム的に行うにはどうしたらよいでしょうか。助けて