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

 
Roman.:

EAでインジケータを開くことができないというエラーが発生する理由を教えてください。

この条件を満たしている。

-パラメータのリスト(必要な場合)。送信されるパラメータは、カスタムインジケータの外部変数(extern)の宣言順と型が一致している必要があります。


インジケーターの名称を確認する必要があります。 である可能性があります。
 
Vinin:

インジケータ名を確認する必要がありますね。 それが何であるかはわからない。


名前を確認しました。いいんです。図解すると...

追伸:5桁のDCターミナルを設置し、そこにすべてを移し、再度すべてをダブルチェックし、たくさんのコードを編集しましたが、もうそのようなエラーは起こりません。

 
MQLプログラミングの達人たちよ、新参者が問題を解決するのを助けてくれ。プログラムが正しく動作しない、やるべきことができない。私のエラーの原因を教えてください。プログラムに必要なのは
1.注文を開き、PriceBuy変数に始値の 値を代入し、それに関するメッセージを表示する。
2.TakeProfitに達した時点で、同じ条件で新規注文を出す。


extern double PriceBuy = 0;
extern bool Buy = true;
extern bool number = false;

int start()
{
if(Buy)
{
int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-100*Point,Bid+100*Point);
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES).
PriceBuy=OrderOpenPrice();
Alert("Buy Price = ",PriceBuy);
Buy = false;
number = true;}; Alert("Buy Price = ",PriceBuy); Alert("Buy Price = false"); Number = true;}.

if (Bid+100*Point<=PriceBuy && number)
{PriceBuy = 0;
number = false;
Buy=true;}。


return;
}
よろしくお願いします。
 
OTPOK:

MQLプログラミングの達人たちよ、新参者が問題を解決するのを助けてくれ。プログラムが正しく動作しない、やるべきことができない。私のエラーの原因を教えてください。プログラムに必要なのは
1. 注文をオープンし、PriceBuy変数にオープンプライスの値を代入し、それに関するメッセージを表示します。
TakeProfitに達したときに、同じ条件で新規注文を 出すこと。
以下はプログラムコードです。


extern double PriceBuy = 0;
extern bool Buy = true;
extern bool number = false;

int start()
{
もし(買い)
{
int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-100*Point,Ask+100*Point)とします。
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
PriceBuy=OrderOpenPrice()です。
Alert("買い値 = ",PriceBuy);
購入=falseとする。
number = true;}。

if(Bid+100*Point<=PriceBuy&& number)
{PriceBuy = 0;
number = false とする。
Buy=true;}。


を返します。
}
ありがとうございました。

ビッド>=プライスバイ+100*ポイント
 

kernel32.dllのCreateNamedPipe()関数を接続したいのですが、どうすればよいですか?Dwordタイプのフラグを処方してほしい。

私はこの方法でやっています。

#define ACCESS_SYSTEM_SECURITY 0x01000000L

当然、コンパイラは最後のLに悪態をつく。どうすればいいか教えてください。

 
Vinin:

インジケータ名を確認する必要がありますね。 そうかもしれませんね。


そう、本当にビクター、私の間違いは、自動的に 対処しようとしたことだ...。:-)) を経由してインジケータに接続します。

...
string short_name;
...
short_name="NonLagMA";
IndicatorShortName(short_name);
...

...iCustom()を通してインジケータの値にアドレスするとき、つまり、それらが一致しないとき、インジケータはその「通常」の名前によってのみアドレスされるべきです、私は「短い」および「通常」の名前を見つけませんでした。

ありがとうございます。

 

こんにちは。

エラーを見つけるのに協力してください。

このコードは、価格がチャート上に引かれたラインを超えたら、すべてのポジションを決済するように設計されています。ほとんどの場合、そうです。しかし、定期的に2つの不具合が発生します。価格がラインを超えたが、ポジションが決済されない。2.線は現在の価格 水準と(斜めに)交差しているが、一致しない(現在のローソク足に影響しない)、一方、すべてのポジションは閉じている(これは起こってはならないことである)。

int start() {
//============== Закрытие по линии Close ========================================
   int bar1,bar2,bar3;
   if (Draw_Close && ObjectFind("LINES CLOSE")==-1)
   {
      bar3 = searcFR(0,1);bar2 = searcFR(bar3,-1);bar1 = searcFR(bar2,1);
      drawline("LINES CLOSE",Color_Close,Time[bar1],High[bar1]+15*Point,Time[bar3],High[bar3]+15*Point);
   }
   string order = checkapp();
   if (order=="LINES CLOSE")
   {DeleteAllOtlozh_b();
    CloseAll_b(DeleteOtlozh,Proskalz);
    ObjectDelete("LINES CLOSE");
    ObjectDelete("LINES CLOSE n");
    Draw_Close  = false;
    if(UseAlert){
    Alert("Уровень достигнут, заблокирован");
    } 
   } 
}     
//==================================================================================


//=========== Вычисление линии Close  =================================================================
int searcFR(int bar, int UP_DN)
{  while(true)//ищем 1 фрактал после bar
   {  bar++;
      if (Fractal(bar) == UP_DN) return(bar);} 
   return(0);  
}
//--------------------------------------------------------------------------
int Fractal(int br)
{  if (br <= 2) return(0);
   if (High[br] >= High[br+1] && High[br] > High[br+2] && High[br] >= High[br-1] && High[br] > High[br-2]) return( 1);
   if (Low [br] <= Low [br+1] && Low [br] < Low [br+2] && Low [br] <= Low [br-1] && Low [br] < Low [br-2]) return(-1);
   return(0);
}
//-------------------------------------------------------------------
int drawline(string Name, color col,int X1,double Y1,int X2,double Y2)
{
   if (ObjectFind(Name)==0)return; //Если обьект существует
   int X1g=Time[0];
   int X2g=Time[0]+Period()*1200;
   double Y1g=Y1+(Y2-Y1)*(X1g-X1)/(X2-X1);
   double Y2g=Y1+(Y2-Y1)*(X2g-X1)/(X2-X1);
   ObjectCreate(Name, OBJ_TREND, 0,X1g,Y1g,X2g,Y2g);
   ObjectSet   (Name, OBJPROP_COLOR, col);
   ObjectSet   (Name, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet   (Name, OBJPROP_WIDTH, 2);
   ObjectSet   (Name, OBJPROP_BACK,  false);
   ObjectSet   (Name, OBJPROP_RAY,   false);
   return;
}
//----------------------------------------------------------------------- проверка всех линий
string checkapp()
{
   int X_1,X_2,X_3;
   double Y_1,Y_2,Y_3;
   double shift_Y = (WindowPriceMax()-WindowPriceMin()) / 50;
   color col;
   for(int n=ObjectsTotal()-1; n>=0; n--) 
   {
      string Obj_N=ObjectName(n);
      if (ObjectType(Obj_N)!=OBJ_TREND) continue;
      if (StringFind(Obj_N,"LINES ",0)!=-1)//найден обьект-тренд к которому вычисляется приближение
      {
         X_1 = ObjectGet(Obj_N, OBJPROP_TIME1); 
         X_2 = ObjectGet(Obj_N, OBJPROP_TIME2); 
         ObjectDelete (Obj_N+" n");
         if (X_1>X_2 ||  X_2<Time[0]) {continue;}//ObjectDelete(Obj_N);
         Y_1 = ObjectGet(Obj_N, OBJPROP_PRICE1);
         Y_2 = ObjectGet(Obj_N, OBJPROP_PRICE2);
         col= ObjectGet(Obj_N, OBJPROP_COLOR);
         ObjectCreate (Obj_N+" n", OBJ_TEXT,0,X_1-Period()*60,Y_1+shift_Y,0,0,0,0);
         ObjectSetText(Obj_N+" n",StringSubstr(Obj_N,6,5) ,7,"Arial");
         ObjectSet    (Obj_N+" n", OBJPROP_COLOR, col);
         if (X_1<=Time[0] && X_2>=Time[0])//попадает во временной диапазон
         {
            X_3=Time[0];Y_3=Y_1+(Y_2-Y_1)*(X_3-X_1)/(X_2-X_1);//уравнение прямой
            if (Y_3>=Bid&&Y_3<=Ask)
            { 
               return(Obj_N);
            }
         }
      }
   }
}

あらかじめご了承ください。

 
nemo811:

エラーを見つけるのに協力してください。

質問を撤回し、私はそれを理解しました。

 
toropchin:

kernel32.dllのCreateNamedPipe()関数を接続したいのですが、どうすればよいですか?Dwordタイプのフラグを処方してほしい。

私はこの方法でやっています。

#define ACCESS_SYSTEM_SECURITY 0x01000000L

当然、コンパイラは最後のLに悪態をつく。何かアドバイスがあれば教えてください。

ずん子

桁を削除します。8ビットしかありえない。MQL4は大きなものには対応できない。

余分なゼロを削除する必要があります。次のように試してみてください:0x1000000L


こうはいかないんです。コンパイラがエラー'0x1000000L' を表示 - 無効な数値
 
toropchin:

そのようなことはありません。コンパイラはエラー'0x1000000L' - 無効な番号を 生成します。

夜は全く考えず...。:-))16ビットシステムには、そのような数値はありません。定型の識別子である。

Lを削除する必要があります:0x01000000