[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 199

 
Aleksander:

それで...2つのスクリプトを作成し、必要なキーにぶら下げ、その中にターミナルのグローバル変数(Expert Advisorが定期的に読み取る)を追加し、バーシフトを変更する...:-)

もし可能なら - グラフィカルなオブジェクトを介して同じことができる ...例えば、EAの初期化中に2つのテキストマークが表示され、そのうちの1つが失われた場合(EAの作業中にマウスでその1つを選択し、Delキーを押した)、あなたのBarsheiftのカウンターは一方的に罪に問われることになります:-)- 削除したマークを画面上に復元する......。


うそつけ、それならもう、チャートの上で垂直を追いかけろ、相対化しろ。
 
alsu:

ところで、なぜMTはフックを欲しがらないのでしょうか?

保護する。作品のサブクラス化
 
Zhunko:
保護する。作品のサブクラス化
then substitute WindowProc))
[Deleted]  

皆さん、こんにちは。コードのバグを見つけるのを手伝ってください、疲れました - 私は何もできません。

ラストスパートの可能性が高い。

#define MagicNum  700283
//-----
ObjectSetText
extern double  Percent        = 0.8;
extern double  TakeProfit     = 55;
extern bool    UseMM          = true;
extern int     PercentMM      = 1;
extern double  Lots           = 0.1;
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM)
    {
      double a;
      a = NormalizeDouble((PercentMM * AccountFreeMargin() / 100000), 2);      
      if(a > 49.99) return(49.99);
      else if(a < 0.01)
       {
         return(0);
       }
      else return(a);
    }    
   else return(Lots);
 }
//+------------------------------------------------------------------+ 
int CalculateCurrentOrders()
 {
   int orderT = OrdersTotal(), buys = 0, sells = 0;
   //----
   for(int i = 0; i < orderT; i++)
    {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
      if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNum)
       {
         if(OrderType() == OP_BUY)  buys++;
         if(OrderType() == OP_SELL) sells++;
       }
    }
   if(buys > 0) return(buys);
   else if(sells > 0) return(-sells);
   else return(0);
 }
//+------------------------------------------------------------------+  
int start()
 {
        //==============
   int  ticket;
   //-----
   if(CalculateCurrentOrders() == 0) 
    {
      if(AccountFreeMargin() < (1000 * GetLots())) 
         {
            return(0);  
         }
      if(High[1]<High[2] && Low[1]>Low[2] && (High[1]-Low[1])/(High[2]-Low[2])<Percent)
       {
         ticket=OrderSend(Symbol(), OP_BUYSTOP, GetLots(), High[1], 3, Low[2], High[1] + TakeProfit * Point, "iB", MagicNum, 0, Green);
         ticket=OrderSend(Symbol(), OP_SELLSTOP, GetLots(), Low[1], 3, High[2], Low[1] - TakeProfit * Point, "iB", MagicNum, 0, Red);
       }
    }
 }
 
SkinnerDE:

皆さん、こんにちは。コードのバグを見つけるのを手伝ってください、疲れました - 私は何もできません。

ラストスパートの可能性が高い。


コンパイルができないとか、何か問題でも?
 
ところで、ロットにレバレッジをかけるのを忘れていますね。したがって、GetLots()関数の変数は、ほとんどの場合0になります(あなたのアカウントに100万がある場合を除く)。
[Deleted]  

{' - left parenthesis expected C:\DOCUME~19226~10016~1GentaForexMACD_N~1.MQ4 (11, 2)

'{' - semicolon expected C:\DOCUME~19226~1 Filter0016~1 FilterForexMACD_N~1.MQ4 (11, 2)

これで

 
//+------------------------------------------------------------------+
double GetLots()
 { 
   if (UseMM) {
      double a;
      a = NormalizeDouble((PercentMM * AccountFreeMargin() / 100000), 2);      
      if(a > 49.99) return(49.99);
      if(a < 0.01)  return(0);
      return(a);
    }    
 return(Lots);
 }
なぜか括弧とイェルセブで埋め尽くされる :-)
[Deleted]  
何も変わらず、同じエラー(((
 
ZS - ロット = 0 - 取引を行おうとするとエラーが発生します...