MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 648

 
psyman:

ネバーネス、なんでここに書くんだ?

フルームで別スレ立ててそこで象を配る、脱帽です。

まあ、すぐにモデレーターにそう言ったんですけどね。

司会者さん、トレーディング理論については別スレッドで議論しましょうよ。

今のところ司会者が反対しています。

おそらく、司会者は自分なりの「取引理論」を持っていないのだろう。

 
inter78:

こんにちは!私もチャートの切り替えについて質問します。28~30個のチャートが開いています。ショートカットで考えながら切り替え、条件に合えばポジションをオープンにして います。10個も20個も持っている。または5.そんなことはどうでもいいのです。重要なのは、他が邪魔をして、オープンポジションの情報がないことです。グローバル変数にIDを送るようにしました。しかし、全く違う数字が返ってくる。IDは大きく歪んでいると説明されました。ファイルを通して試してみました。TXTで返され、longには変換されない。コードに手動でIDを入れたのですが、うまくいったようです。フィールドを移動させると、必要なチャートが開きます。 どうすればよいのでしょうか?

doubleとlongの長さは同じ8バイトである。

longをdoubleで保存する(逆も同様)には、"union "を使用することができます。


例えば、こんな感じです。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long id=ChartID();
   
   double X=LongToDouble(id);
   long   Y=DoubleToLong(X);
   
   Print("id=",id," X=",X," Y=",Y);
  }


//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }
 
neverness:

まあ、そのことはすぐにモデレーターに伝えましたけどね。

司会者さん、トレーディング理論については別スレッドで 議論しましょうよ。

司会者は今のところ反対しています。

おそらく、司会者はご自身の「取引理論」をお持ちでないのでしょう。

理解できないもの、なぜかわからないものを好んで描く理論派 ピエロの 支店に行くしかないのです。

フォーラムには似たようなスレッドがたくさんあります - せめて議論してください

От теории к практике
От теории к практике
  • 2017.12.01
  • www.mql5.com
Добрый вечер, уважаемые трейдеры! Решил было на какое-то время покинуть форум, и сразу как-то скучно стало:)))) А просто читать, увы - неинтересно...
 
Taras Slobodyanik:

doubleとlongは同じ長さ、8バイトである。

longをdoubleに(またはその逆に)保存するには、"union "を使用することができます。


例えば、こんな感じです。

すみません、Tarasさん、グローバル変数に IDを送り、それを歪みなく抽出する方法のコードを教えてください。
 
inter78:
申し訳ありませんが、Tarasは、グローバル変数に IDを送信し、歪みなくそれを抽出する方法について、少しコードを持つことができないのですか?

これで準備は整いましたので、あとは書き込み/読み込みを追加するだけです。

string GVname="gvName";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   //создаем временную глобальную переменную
   if (!GlobalVariableCheck(GVname))
      GlobalVariableTemp(GVname);
   
   long  id=ChartID();
   
   //сохраняем long как double
   GV_Save(LongToDouble(id));
   
   //читаем double и переводим в long
   long  Y=DoubleToLong(GV_Read());
   
   Print("id=",id," Y=",Y);
  }

//+------------------------------------------------------------------+
union eightbytes
   {
   double   dbl;
   long     lng;
   } VALUE;

double LongToDouble(long value)
   {
   VALUE.lng=value;
   return(VALUE.dbl);
   }

long DoubleToLong (double value)
   {
   VALUE.dbl=value;
   return(VALUE.lng);
   }


//+------------------------------------------------------------------+
double GV_Read()
{
if (!GlobalVariableCheck(GVname))
   GlobalVariableTemp(GVname);
   
return(GlobalVariableGet(GVname));
}
//+------------------------------------------------------------------+
void GV_Save(double value)
{
GlobalVariableSet(GVname, value);
}
 
Taras Slobodyanik:

ということで、設定は完了しましたので、あとは書き込み/読み込みを追加するだけです。

ありがとうございました。このようなインジケーターを作ろうとしたことがある人はいるのだろうか。これほど長い間、見つけることができなかったのです。多くの人に興味を持ってもらえると思います。
 
Vitaly Muzichenko:

OnInit()の初期化を行う

いいえ、現在のバーでは信号が出ません。多分、_time変数は、インジケータがチャートに参加した後、初めてすべてをカウントした後にリセット することができます。

インジケーターがすべてを1回カウントしたことを知るにはどうしたらよいですか?
 
Ghabo:

チャートにインジケータを投げて...ALERTが、信号が5小節離れている。さらに作業中、当然のようにビープ音が鳴る。

起動時にビープ音を鳴らさないようにするには?

if(М_А>0.0)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

関数AL()では、すべての可能なアラートを表示します。

M_Aとは?何が入っていて、どこからデータを取ってくるのか?

時間チェックとあわせて、現在のバーでのシグナルの有効性を確認する必要があります。そして、M_Aの値を確認するだけです。どこから入手するのですか?

 
Artyom Trishkin:

M_Aとは?何が入っていて、どこからデータを取ってくるのか?

時間と共に現在のバーのシグナルの有効性を確認する必要があります。そして、単純にM_Aの値を確認するのです。どこから入手するのですか?

インジケーターを呼び出す。

М_А =NormalizeDouble(iCustom(NULL,0,"Morning_All_Best",0,i),Digits);

有効性を確認する方法は?

 
Ghabo:

インジケーターを呼び出す。

有効性を確認する方法は?

1.なぜ正規化を行うのですか?インジケータサイクルで動作させるには高価なオペレーションであり、ここでは必要ない。

2.ゼロより多い」とはどういう意味ですか?このカスタムインジケーターは、どのようなシグナルを出すのですか?データウィンドウ(Ctrl+D)のこのインジケータのバッファ値には何が表示されていますか?