[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 142

 
E_mc2 >> :

もし、寝坊が心配なら、この行を変えてみてください。

\ ■ if ( WarningMode>0 ) PlaySound(soundfile); ■ if ( WarningMode>0 ) 再生する。

これが指標となる

\ ■ if ( WarningMode>0 && shift==0) GlobalVariableSet("Alarm",1); \.

を作成し、以下のようなインジケータを作成します。

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

そして、眠りにつくときには、メインのインジケーターだけでなく、目覚まし時計もセットします。

F3 キーで Alarm clock 変数の値 0 を変更することにより、アラームクロックのスイッチを手動でオフにすることができます。

 
Urain >> :

何のために必要なのか?もっと詳しく教えてよ、もしかしたら解決策があるかもしれないのに、人に理解してもらうための正しい質問の仕方を知らないんだ。

あなたが書いたものに対して、私は2つの解決策を持っています、一度に2つ書くには時間がかかり過ぎます :)

..

ちなみに、このような長いコードはファイルとして添付するのがベターです。

そして、コード用に特別なボタンSRCがあります。

ああ、信号を見逃さないために必要なんだ)アラートだけ鳴ると、特に夜間は見逃しやすい((( アラームってなんだ?どうなるんだろう?

回線を変更した・・・新しいインジケータAlarmを作った・・・でも、よくわからない・・・インジケータが信号を出しても出さなくてもずっと動いている・・・インジケータから信号が出ていなくても目覚まし時計が鳴り続けている))) 信号が出ていないのに目覚まし時計は動いている・・・・・。

 
E_mc2 >> :

電波を逃さないために必要です))一回しか鳴らないので、特に夜間は見逃しやすい(( しかも、アラームってどういう意味?どうなるんだろう?

上記のように、インジケーターのラインを変更します。

添付のインジケータをコンパイルして実行します。

インジケータを無効にするか、グローバル変数 "alarm clock" をリセットしない限り、tick ごとに鳴ります。

ファイル:
wxinptvxq.mq4  1 kb
 

Moving Average Expert Advisor。

注文を出すための関数KimIVを 挿入しています(GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()) )。まだクロージングに至っていなかったのです。インジケーターのデータを一箇所に集め、プログラムのどの場所でも使えるように、独自のインジケーターデータ関数void Indicat_Var() を作りました

Indicat_Var()にCheckForOpen()関数でアクセスすると全てうまくいくのですが、Indicat_Var()にCheckForClose()関数でアクセスすると注文が閉じないのはなぜでしょう?

また、CalculateCurrentOrders(string symbol)とExistPositions()という関数が重複しているように思います。

ご教授ください

ファイル:
magkimiv.mq4  15 kb
 

ロット計算機能は、もともとEAで提供されていたものです。別のものを追加した場合(GetSizeLot())、(少なくとも)元のものを削除する - LotsOptimized()

//------------------------------------------------

確かに。オープンポジションの有無を判断する機能は、互いに重複している。

どちらか一方は削除可能です。(どのように違うのか、そしてどちらがより必要なのかを知ることができます!)

//--------------------------------------------

https://www.mql5.com/ru/articles/1385 をご覧ください。

そこに、ちょうど、このEAをロシア語コメント付きで改造したコードがあります。

修正、 - その通り、閉じることによって。

 

OPENとCLOSEのPOINTをチャートにマークするのでしょうか?

プロの方に質問なのですが、そのようなインジケーターやスクリプトはあるのでしょうか?

というのは、チャート上に始値や終値を描画するものでしょうか?

注文の?線でつなぐのです。

赤いのは損してますね。歴史上の間違いの分析に便利!

 

この質問はすでにされていると思います。

取引履歴からマウスで直接該当するチャートにドラッグすることができます。

そして、あなたが探しているものを手に入れることができるのです。

どこかで見たような台本ですね。I.Kimはそんな台本を持っていたような気がします。

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

Cursorの 目利きに協力を依頼し、価格を 提示する。

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

 

トレンドが変わった時(オープンコンディション)に、オープンオーダーがクローズしないのはなぜか、教えてください。また、このエラーはどうすれば直るのでしょうか?

私の場合、コードはこんな感じです。

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int MagicNumber2=1612; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1;
// и просто нужные переменные (типа флажки)
double ticketbuy;
double ticketsell;



int init()
  {
  // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
  if(Digits==3 || Digits==5) BrokerDecimal=10; 
  // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal; 
  TP           = TP * BrokerDecimal;
  return(0);
  }

int start()
  {
  // Рассчеты и анализ индикаторов
  double jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORJAW,1); //синяя линия (челюсть)
  double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORTEETH,1);//красная линия (зубы)
  double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORLIPS,1);//зеленая линия (губы)
  
  double lastClose=iClose(NULL,0,1);
  
  
  // Собственно тело программы  
  if((OrderSelect( ticketbuy, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && lips> jaw && lastClose> lips) // условие выставления ордеров БАЙ
    SEND_BUY(); // вынесем "модуль" выставления ордера бай - добавить внизу
  
  if((OrderSelect( ticketsell, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && jaw> lips && lastClose< jaw) // условие выставления ордеров СЕЛЛ
    SEND_SELL(); // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
  if (OrdersTotal()>=1)
      {
        if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
          {
            if(OrderType()==OP_BUY)
              {
                if(( lips== jaw || lips== teen) && lastClose== lips) // условия закрытия сделки БАЙ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
            if(OrderType()==OP_SELL)
              {
                if(( jaw== lips || jaw== teen) && lastClose== jaw) // условия закрытия сделки СЕЛЛ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
          }
        else
          {
            Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());
            return(-1);
          }
      }
         
  return(0);
  }

// "модуль" выставления ордера бай
void SEND_BUY()
  {
  double sl_buy;
  if(! SL)
  { 
  sl_buy=0;
  }
    else
    {
    sl_buy=Ask- SL*Point;
    }
    ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask, slippage, sl_buy,Ask+ TP*Point,"take_trend", MagicNumber1,0,Blue);
          if( ticketbuy == -1)
          {
          Alert(Symbol(),"ошибка:бай", GetLastError());
          return(-1);
          }
            if( ticketbuy > 1)
            Alert (Symbol(),"бай - ок !");
  }

// "модуль" выставления ордера сэлл
void SEND_SELL()
  {
  double sl_sell;
  if(! SL)
  { 
  sl_sell=0;
  }
   else
   {
   sl_sell=Bid+ SL*Point;
   }
   ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid, slippage, sl_sell,Bid- TP*Point,"take_trend", MagicNumber2,0,Red);
         if( ticketsell == -1)
         {
         Alert(Symbol(),"ошибка:сэлл", GetLastError());
         return(-1);
         }
           if( ticketsell > 1)
           Alert (Symbol(),"сэлл - ок !");
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect(int cntr, string comm)
  {
    double closeprice;
    if(OrderSelect( cntr, SELECT_BY_POS, MODE_TRADES))
      {
        RefreshRates();
        if (OrderType()==OP_BUY)
          closeprice=Bid;
        else
          closeprice=Ask;
        if (OrderClose(OrderTicket(),OrderLots(), closeprice,10,Green))
        {
          Print( comm, OrderTicket());
        }
        else
          {
            Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());
          }
      }
    else
      {
        Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());
      }
  }
 

スムージングされたrsiからシグナルを得る方法を教えてください。(MA => RSI)。