初めての方からの基本的な質問 - ページ 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;
     }
 
MT5でのバックテストについて質問です。
最適化したパラメーターを保存しようとしたところ、保存できません。
設定を保存するを選択し、ファイルに名前をつけ保存ボタンを押しますが反応が無く保存できません。
ファイル形式は*iniとなっています。
どなたか原因がわかる方いませんか?
よろしくお願いします。
 

mathmedian()の中央値を算出するコマンドを使用しています。

75本のローソク足close値をcopyclose()で集めmathmedian()で中央値を算出するプログラムを作成しました。

デバッグ初期ではうまくいっているようなのですが最新情報では全然違う数値を出してきます。

mathmedian() copyclose()のどちらでどんなエラーを出すと数値が変わるのでしょうか?

またどのようにエラーを回避するとうまくいくのでしょうか?