初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1226

 
Alexey Belyakov:


それもうまくいかなかった。

ホブゴブリンは何キロのコードが好きなんだ...。

あなたの問題は、変数の宣言を 考慮すると、6行のコードで解決できます。

/************************Expert tick function************************/
void OnTick()
 {
  bool signal = true;
  datetime timeBar = iTime(_Symbol, PERIOD_CURRENT, 0);// период можно поставить по своему усмотрению
  datetime static timeOpen = 0;
  if(timeBar > timeOpen)
   {
    if(signal)
     {
      // открыть позицию
      timeOpen = timeBar;
     }
   }
 }/******************************************************************/

信号の変数を解明してほしい。

 

О!効いてますね〜。同志の皆さん、アイデアをありがとうございました。

でも、ちょっとだけ手を加えました。なく、楽になったりもした(本当)。この複雑なMQLのロジックを説明することはできませんが)。

そう思って実装しました。

datetime timeBar = iTime(_Symbol,PERIOD_CURRENT, 0);// период можно поставить по своему усмотрению
datetime static timeOpen = 0;

if((PositionsTotal()==0)&&(c0>h1)&&(rGENUP>0.30)&&(timeBar > timeOpen))    // Условие для открытия позиции.
     {
      MqlTradeRequest request;
      MqlTradeResult  result;
      request.action   =TRADE_ACTION_DEAL;                         // тип торговой операции
      request.symbol   =Symbol();                                 // символ
      request.volume   =1;                                       // объем в 1 лот
      request.type     =ORDER_TYPE_BUY;                         // тип ордера
      request.price    =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
      request.deviation=3;
      request.sl    = NormalizeDouble(Ask-50*_Point,_Digits);
      request.tp    = NormalizeDouble(Ask+50*_Point,_Digits);    

      if(!OrderSend(request,result))
         PrintFormat("OrderSend error %d",GetLastError());     // если отправить запрос не удалось, вывести код ошибки
      //--- информация об операции
      PrintFormat("retcode=%u  deal=%I64u  order=%I64u",result.retcode,result.deal,result.order);
      // допустимое отклонение от цены
timeOpen = timeBar;
}
MQL5でポジションオープンの
コードがこんなにあるのはなぜだろう。MQL4とは異なります。4では1行だけです。削れるか?例えば、エラーハンドラを削除することは可能でしょうか?


Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Alexey Belyakov:

О!効いてますね〜。同志の皆さん、アイデアをありがとうございました。

でも、ちょっとだけ手を加えました。なく、楽になったりもした(本当)。この複雑なMQLのロジックを説明することはできませんが)。

そう思って実装しました。

MQL5では、なぜポジションを 開くためのコードがこんなに多いのでしょうかね。MQL4とは異なります。4では、1行だけです。でも、ここで・・・もっと短くできませんか?例えば、 エラーハンドラを削除できないか?


トレードクラスを使用する。そして、そのコードは非常に短いものになります。

//+------------------------------------------------------------------+
//|                                            Only_one_purchase.mq5 |
//+------------------------------------------------------------------+
#property version   "1.003"
#property script_show_inputs
#include <Trade\Trade.mqh>
CTrade         m_trade;          // trading object
//--- input parameters
input ENUM_POSITION_TYPE   InpPositionType   = POSITION_TYPE_BUY; // Position Type
input double               InpVolume         = 0.0;               // Volume
input ulong                m_magic           = 15489;             // magic number
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   m_trade.SetExpertMagicNumber(m_magic);
//--- open a position
   if(InpPositionType==POSITION_TYPE_BUY)
      m_trade.Buy(InpVolume);
   else
      m_trade.Sell(InpVolume);
  }
//+------------------------------------------------------------------+
 
Alexey Belyakov:

О!効いてますね〜。同志の皆さん、アイデアをありがとうございました。

でも、ちょっとだけ手を加えました。なく、楽になったりもした(本当)。この複雑なMQLのロジックを説明することはできませんが)。

そんな思いで実装しました。

MQL5でポジションオープンの コードがこんなにあるのはなぜだろう。MQL4とは異なります。4では、1行だけです。しかし、ここで・・・短縮できるのでしょうか?例えば、 エラーハンドラを削除できないか?


そのため、コンディションで持っている場合

if((PositionsTotal()==0)&&

では、なぜ新しいバーのためにさらにチェックが必要なのでしょうか?それとも、同じバーでポジションをクローズし、2回目のオープニングを禁止するオプションがありますか?

 
Alexey Belyakov:

О!効いてますね〜。同志の皆さん、アイデアをありがとうございました。

でも、ちょっとだけ手を加えました。なく、楽になったりもした(本当)。この複雑なMQLのロジックを説明することはできませんが)。

そう思って実装しました。

MQL5では、ポジションを開く のになぜこんなに大きなコードがあるのだろう。MQL4とは異なります。4では、1行だけです。しかし、ここで・・・短縮できるのでしょうか?例えば、 エラーハンドラを削除できないか?


昔、MQL4があったとき、「下位のアクセス権が与えられていない--自分なりのやり方ができるように」と憤慨していた人がいましたね。

MQL4でOrderSend()にアクセスできるようになったので、いわばMQLでそのロジックを展開したわけです。でも、そうではなくて、「複雑すぎる」という苦情が来ているんです。

複雑?問題ありません。SBのトレードクラスは、MQL4標準のトレード関数とほぼ同じです。
MQL4では、このようなクラスがトレード関数となります。そしてMQL5で - すべてオープンアクセスで。

それを利用する。

 
Artyom Trishkin:

昔、MQL4があったとき、「下位のアクセス権を与えないから、自分たちのやり方で何かできる」と憤慨していた人がいましたよね。

MQL4でOrderSend()にアクセスできるようになったので、いわばMQLでそのロジックを展開したわけです。でも、そうではなくて、「複雑すぎる」という苦情が来ているんです。

複雑?SBのトレードクラスは、MQL4標準のトレード機能とほとんど同じです。
MQL4では、このようなクラスがトレード関数となります。そしてMQL5で - すべてオープンアクセスで。

それを利用する。

ドクタ-、ドクタ-。なぜそんなに怒っているのか(今日)©。

 
Alexey Viktorov:

ドクトル、あぁドクトル。なぜそんなに怒っているのか(今日)©。

氷の穴の中に入って...

 
Alexey Viktorov:

だから、もしあなたが、ある条件を

なぜ新しいバーをチェックする必要があるのですか?それとも、同じバーでポジションがクローズするので、2回目のオープンを認めないという選択肢もあるのでしょうか?

その通りです。同じバーでポジションをクローズするオプションがあります。

 

(新しい壁に切り込みを入れる。)その "壁 "をブレイクイーブンと呼びます。

MQL4ではこのように実装されていました。

(どこか覚えていないところでコピーした)

int BULevel=30;

   for(int i=0; i<OrdersTotal(); i++) 
      {
       if(OrderSelect(i, SELECT_BY_POS))
        {      
         if(OrderType()==OP_BUY) 
          {
           if(OrderOpenPrice()<=(Bid-BULevel*Point)&&OrderOpenPrice()>OrderStopLoss())
            {      
             int p=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-50*Point,OrderTakeProfit(),0,Green);
            }
           }       
 
         if(OrderType() == OP_SELL) 
           {
            if(OrderOpenPrice()>=(Ask+BULevel*Point)&&OrderOpenPrice()<OrderStopLoss()) 
             {
              p=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+50*Point,OrderTakeProfit(),0,Red);
             }
           } 
         }
       }

//------------------------------------------------------------------+

しかし、5-PCではこうして実装されているのです。どうすればいいのでしょうか?

Trading Classesを見たが、そこにはない。でも、モノは必要なんです。プロはどう言う?

 

他のチャートのトレードがチャートに表示されないようにするにはどうしたらいいですか?

指定されたチャートにあるロボットのトレードのみ。

理由: