初めての方からの基本的な質問 - ページ 8

 
JRandomTrader #:

4株を売るのを止める理由は何ですか?

どうやらアカウントの種類をNettingに変更しなければならないようです...今知りました
 
Vladislav Krivorutsko #:
どうやら、このためには、アカウントの種類をNettingに変更する必要があるようです。

ヘッジが目的なら、ポジションチケットの指定が必要です。

ここで、参考文献から、「ヘッジシステムのポジションを変更または決済するときは、必ずそのチケット(MqlTradeRequest::position)を指定してください」とあります。

 
Vladislav Krivorutsko オープンポジション の一部だけをクローズする方法を教えてください。つまり、例えば10株のLongポジションを保有していた場合、どうすれば4株減らすことができますか?それともmt5ではできないのでしょうか?

メソッドを見る

PositionClosePartial

指定したシンボルまたは指定したティックでポジションの一部をクローズする。


追記:ただし、これはヘッジ取引口座に限った話です。

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClosePartial
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / PositionClosePartial
  • www.mql5.com
PositionClosePartial(const string,const double,ulong) - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

エントリーしてからボリンジャーバンド値を超えた時に過去のローソク足データを保存したいのですが

下記のプログラムでは動きません。どこが間違いかを教えてください。

また、別のプログラムがいい場合はそれも教えてください。


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

//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForopen(void)
  {
   MqlRates rt[4];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,4,rt)!=4)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
//--- get current Moving Average
   double   ma[4];
   if(CopyBuffer(ExtHandle,0,0,4,ma)!=4)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;
     }

   double Bandplus2[4];
   CopyBuffer(ExtBands2, 1, 0, 4, Bandplus2);
   double Bandzero2[4];
   CopyBuffer(ExtBands2, 0, 0, 4, Bandzero2);
   double Bandminus2[4];
   CopyBuffer(ExtBands2, 2, 0, 4, Bandminus2);


//--- positions already selected before
   bool signal=false;
   long type=PositionGetInteger(POSITION_TYPE);

   if(type==(long)POSITION_TYPE_BUY && rt[2].open==UUB && ZEROBUY2==2)
     {
      UUB=rt[2].close;
      ZEROBUY2==3;
     }

   if(type==(long)POSITION_TYPE_BUY && rt[2].close>=Bandplus2[2] && ZEROBUY2==3)
     {
      UUB=rt[2].close;
      UUDATA=MathAbs(UUA-UUB);
      UUC=UUA+UUDATA*0.5;
      ZEROBUY2==4;
     }

   if(type==(long)POSITION_TYPE_BUY && rt[2].close>=UUB && ZEROBUY2==4)
     {
      UUB=rt[2].close;
      UUDATA=MathAbs(UUA-UUB);
      UUC=UUA+UUDATA*0.5;
     }

   if(type==(long)POSITION_TYPE_BUY && rt[2].close<=UUC && ZEROBUY2==4)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionClosePartial(_Symbol,TradeSizeOptimized()/2,3);
      ZEROBUY2=5;
     }


///////本命buy
   if(type==(long)POSITION_TYPE_BUY && 1.0>(log10(rt[3].close)/log10(ma[3])) && UU==2 && ZEROBUY1==2)
     {
      signal=true;
      UU=3;
      ZEROBUY1=3;
     }

//--- additional checking
   if(signal && UU==3 && ZEROBUY1==3)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionClose(_Symbol,3);
      UU=0;
      UUA=0;
      UUB=0;
      UUC=10000;
      UUDATA=0;
      ZEROBUY1=1;
      ZEROBUY2=0;
     }
理由: