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

 
chief2000:

ここで質問です。
カスタムインジケータのコードから、そのインジケータが動作しているウィンドウが現在アクティブになっているかどうかを知ることはできますか?
例えば、同じインディケータが2つのウィンドウで動作している場合、チャートがアクティブになっているウィンドウでのみ動作し、2番目のウィンドウでは非アクティブになるようにする必要があります。

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

またしても図書館が 役に立ちました :-)
 
Zhunko:
今回も図書館が 役に立ちました :-)
ありがとうございました。
 
こんばんは!こちらのロボットのロールオーバーを早速始めてみたのですが、いきなりエラーなしのプロカンでも、なんと、いきなり2つの注文を同時に開いてくれます!!!!!。 つまり、1回目と2回目のティックで、1回ずつ注文するのです。以下、そのコードを貼り付けます。BUY変数は、すでにオープンされている買い注文の数で、もしそれがゼロ以上であれば、1つでも注文が存在すれば、オープンしてはいけないということです。
//+------------------------------------------------------------------+
//|                                                        антиб.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double volume=0.01;extern double stoploss=12,takeprofit=12;extern int magic=50001,I=5;
int ticket;double volumee ; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   volumee=volume;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
        
int start()
  {   int BUY;
  
//----

 for( int i=OrdersHistoryTotal() -1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {   if ((OrderProfit( )-3*Point) <  OrderTakeProfit( ) && (OrderProfit( )+3*Point) >  OrderTakeProfit( ) ) { if( OrderTicket( ) == ticket ) {
               volumee = volumee+volumee;}}}}}}
if (volumee>volume*I){volumee=volume;}


              for ( i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_TICKET ) == true)    Alert ("Select error ", GetLastError( ) ) ;
     if(OrderMagicNumber( )== magic){
      if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {
                             BUY++;}}}}   
 if(BUY==0){

 ticket= OrderSend( Symbol(), OP_BUY, volumee, NormalizeDouble(( Ask),Digits),NormalizeDouble(( Point*3),Digits) , NormalizeDouble(( Ask-stoploss*Point),Digits), NormalizeDouble(( Ask+takeprofit*Point),Digits), NULL,  magic, 0, Red) ;}
 
 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
ほら、令状が2枚!!
 

もしかして、forループをいじって、1オーダー、もう1つマイナスして、ループの条件が全然満たされてないとか。そうそう、そうみたいです!ちょうど2つのオーダーが開かれています。

皆さん、前回のコメントは削除した方が良いですか?

いや、まだ2つあって、3つ目か4つ目のティックの後にAlert: Select error 4105が書き込まれます。

注文が選択されていないようで、まずエラーは出ません...。これは正しい for( int i=0;i<=OrdersHistoryTotal();i++){ です。

というように for( int i=0;i<=OrdersTotal();i++){ とします。

そして、同じように2つのオーダーがあります。

以上、1本。ふぅ。;


 
4105-order not selected-エラーは解消されないが、概ね正常に動作する。
 
Ivn:

こんにちは別の時間軸の標準アドバイザーの書き方。例えば、1時間足のチャートにこのインジケータを置くと、4時間足のインジケータが表示されます。

пытался //+------------------------------------------------------------------+
//| 4時の方向にvv.mq4 |。
//| 著作権 © 2012, MetaQuotes Software Corp.
//|https://www.metaquotes.net/|
//+------------------------------------------------------------------+
#property copyright "著作権 © 2012, MetaQuotes Software Corp."
#プロパティリンク "https://www.metaquotes.net/"

#property indicator_chart_window
#プロパティ indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#property indicator_color3 LightSeaGreen
//---- インジケータ・パラメータ
extern int BandsPeriod=20;
extern inttern BandsShift=0;
extern double BandsDeviations=2.0;
//---- バッファ
double MovingBuffer[];
double UpperBuffer[];
double LowerBuffer[];
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
//---- インジケータ
SetIndexStyle(0,DRAW_LINE)を設定します。
SetIndexBuffer(0,MovingBuffer)を設定。
SetIndexStyle(1,DRAW_LINE)を設定します。
SetIndexBuffer(1,UpperBuffer)を設定します。
SetIndexStyle(2,DRAW_LINE)を設定します。
SetIndexBuffer(2,LowerBuffer)を設定します。
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift)を設定します。
SetIndexDrawBegin(1,BandsPeriod+BandsShift)を設定します。
SetIndexDrawBegin(2,BandsPeriod+BandsShift)を設定。
//----
return(0)です。
}
//+------------------------------------------------------------------+
//| ボリンジャーバンド
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted();
ダブルデビエーション
double sum,oldval,newres;
int B=iBars( NULL,PERIOD_H4);
double C=iClose(NULL,PERIOD_H4,0);
//----
if(B <=BandsPeriod) return(0);
//---- 初期値ゼロ
if(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE。
UpperBuffer[B-i]=EMPTY_VALUE。
LowerBuffer[B-i]=EMPTY_VALUE。
}
//----
int limit=B-counted_bars。
if(counted_bars>0) limit++;
for(i=0; i<limit; i++)
MovingBuffer[i]=iMA(NULL,PERIOD_H4,BandsPeriod,BandsShift,MODE_SMA, PRICE_CLOSE,i)とする。
//----
i=B-BandsPeriod+1 とする。
if(counted_bars>BandsPeriod-1) i=B-counted_bars-1。
while(i>=0)
{
sum=0.0;
k=i+BandsPeriod-1 とする。
oldval=MovingBuffer[i];
while(k>=i)
{
newres=C[k]-oldval;
sum+=newres*newres;
k--;
}
deviation=BandsDeviations*MathSqrt(sum/BandsPeriod) となります。
UpperBuffer[i]=oldval+deviationとする。
LowerBuffer[i]=oldval-deviationとする。
i--;
}
//----
return(0)です。
}
//+------------------------------------------------------------------+

動作せず

この newres=C[k]-oldval;- '[' - 想定外のトークンです。

ボリンジャーバンドのインジケーターです。


C[k] の代わりに iClose(NULL,PERIOD_H4,k) を挿入します。

しかし、1時方向のチャートと4時方向のラインをより自然に表示する方法を手に入れました。
このコードをチャートに変換すると、価格がチャネルから離れるのがわかります。4時位置のボリンジャーバンドチャートが時間軸に接続されていないようです。

おつかれさまでした

 

みんな、経験から教えてくれないか...。MT4クライアントターミナルを介して取引するためのVPSを借りるために会社を選んだ、私は10 Sopsで、例えば、1つの実行中の端末を消費する平均でどのくらいのトラフィックに興味があるのですか? 複数の端末が稼働する... そのため、提供されているデータプランの中から適切なものを選択することができます。

P.S. 彼らは総トラフィック、すなわち着信+発信に基づく料金を設定しています。

 

同僚、答えを知っている人。

同じ時間軸(2011年5月1日~2012年1月27日)で、EURUSD通貨ペア、時間足(H1)で、あるDC(Alpari)からストラテジーテスターを持って いますが、同じアドバイザーでも異なるコンピュータ(ラップトップ、デスクトップ)では逆の結果になりました。PCの場合-2000円、ノートPCの場合+3000円。そして、そこそこ、2-3回確認しました。

原因や対処法、またはこのトピックに関する記事を読むことができるリンクを教えてください。
 
Sersad:

答えを知っている仲間たち。

同じ時間間隔(2011年5月1日~2012年1月27日)で、通貨ペアEURUSD、時間足(H1)で、あるDC(Alpari)から、同じExpert Advisorで、異なるコンピュータ(ラップトップ、デスクトップ)で、ストラテジー・テスターを行ったところ、反対の結果が出ました!PCの場合-2000円、ノートPCの場合+3000円。そして、そこそこ、2-3回確認しました。

原因や対処法、またはこのトピックに関する記事を読むことができるリンクを教えてください。


自分も一度巻き込まれたことがあるので...。が似ていた。1台目はMetacquotes、2台目はAlpareyでインストールし、履歴もそれなりにありましたが、同じowlでテストしても大きな食い違いがあり、何が悪いのか長い間分かりませんでした。

1.アルパリから端末をダウンロードする。対象機器の見積もり履歴をダウンロードすると、このウィンドウが表示されます。

F2の後に「ダウンロード」を押してもポップアップしない場合は、アルパリ相場履歴をダウンロードしていることを意味します。F2の後に「ダウンロード」を押してもこのウィンドウがポップアップされない場合は、アルパリからの価格履歴のダウンロードは行われていません。

2.ストラテジーテスターで、すべてのオプションを等しく設定し、「プロパティ」ボタンをクリックしてスプレッドを確認します。ストラテジーテスターの「Symbol properties」ボタンをクリックして、スプレッド値を確認します。

あなたがそれを行う前に - 拭くと、あなたが興味を持っている機器の見積もり履歴をリロード+テスト期間を確認してください:スクリーンショットH4で- それは両方のケースで同じであるようにします。