Firebirdについて

EA(自動売買)の使用について

Re: FxProで動作させるための設定

投稿記事by ziomatrix on 2009年12月28日(月) 16:01

GMT offset値が適正値かチェックしてください。
FXPro でしたら現在は +2 ではないかと思います。
ziomatrix
 
記事: 4
登録日時: 2008年12月02日(火) 00:23

Re: FxProで動作させるための設定

投稿記事by 24C on 2010年1月05日(火) 09:36

ziomatrix さんが書きました:GMT offset値が適正値かチェックしてください。
FXPro でしたら現在は +2 ではないかと思います。


有難うございます。

早速GMTを+2でバックテストをさせていただきました。
以前より良くなりましたが、まだ損益はマイナスになります。

これから、色々とパラメータを設定して見たいと思います。

有難うございました。
24C
 
記事: 3
登録日時: 2009年12月17日(木) 10:43

Re: Firebirdについて

投稿記事by take2 on 2010年1月28日(木) 13:01

お世話になっています。
以下のブレークイーブンコードを組み込ませて貰ったのですが
ナンピン等で複数ポジションがある場合に一番最初のポジションだけにブレークイーブンが実行され
残りのポジションにはブレークイーブンが実行されない事が多々あるのですが
どこを変えれば残りの全てのポジションにも適用されますでしょうか。
お手数ですがご教示願えればと思います。

polarB さんが書きました:
mimi さんが書きました:下記はパラメーターで設定できるのでしょうか?それともコードを追加するのでしょうか?

稼働に関して私は+10pip時点で+-0にストップを移動するようにしてます。

横からですが、
下記のようにすれば動作すると思います。
3,5DigitsブローカーはBE_marginを10倍して下さい。
(ストップ移動をオープンプライスのみにして簡略化してます :?

1:グローバル変数の追加
コード: 全て選択
extern bool   UseBE          = false;//add for Break Even
extern double BE_margin      =  10.0;//add for Break Even

2:[オープンポジションの抽出]に2行追記 (参照:add for Break Even)
コード: 全て選択
//+------------------------------------------------------------------+
//| オープンポジションの抽出                                         |
//+------------------------------------------------------------------+
//ポジション数の確認およびラストオーダーの金額の抽出
  double LastPrice = 0;
  double LastStopLossPrice = 0;//add for Break Even
  for(int i=0;i<OrdersTotal();i++)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true){ //注文ポジションの選択
    if(OrderMagicNumber() != Mc1Number) continue;//マジックナンバー
       if(OrderType()==OP_BUY)pos1++;
       if(OrderType()==OP_SELL)pos2++;
       LastPrice=OrderOpenPrice();
       LastStopLossPrice=OrderStopLoss();//add for Break Even
    }
   }
  int posX = pos1+pos2;
   if((posX==0)||(posX > NumPos))
     {
      NumPos=posX;
     if(NumPos>1 && UseStopLoss &&StopLossstep)Changes_Stoploss(Mc1Number,NumPos);
     }

3:[121用決済条件]に2行追記
コード: 全て選択
//121用決済条件
//買ポジ決済
   double Current_Profit_Buy = Bid-LastPrice;
   if((UseTakeProfit)&&(pos1>0)&&(TPf>TakeProfit)&&(Current_Profit_Buy>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSEBUY,Mc1Number);
   if(UseBE && pos1>0 && Current_Profit_Buy > BE_margin*Point && LastStopLossPrice < LastPrice) BreakEven_Function(Mc1Number);//add for Break Even
//売ポジ決済
   double Current_Profit_Sell = LastPrice-Ask;
   if((UseTakeProfit)&&(pos2>0)&&(TPf>TakeProfit)&&(Current_Profit_Sell>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSESELL,Mc1Number);
   if(UseBE && pos2>0 && Current_Profit_Sell > BE_margin*Point&& LastStopLossPrice > LastPrice) BreakEven_Function(Mc1Number);//add for Break Even

4:BreakEvenコード追加
コード: 全て選択
void BreakEven_Function(int MagicNumberF)
{
   int Error ;
   int Total = OrdersTotal()-1;
   for(int i=Total;i>=0;i--) {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
     if(OrderMagicNumber() != MagicNumberF || OrderSymbol() != Symbol()) continue;
          OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Yellow);
          Error = GetLastError();
          if(Error!=0) Print("Break Even Error OrderTicket = ", OrderTicket());
          break;
   }
}
take2
 
記事: 3
登録日時: 2010年1月28日(木) 12:46

Re: Firebirdについて

投稿記事by polarB on 2010年1月29日(金) 22:06

take2 さんが書きました:お世話になっています。
以下のブレークイーブンコードを組み込ませて貰ったのですがナンピン等で複数ポジションがある場合に一番最初のポジションだけにブレークイーブンが実行され残りのポジションにはブレークイーブンが実行されない事が多々あるのですがどこを変えれば残りの全てのポジションにも適用されますでしょうか。お手数ですがご教示願えればと思います。

このBreakEvenコードはMizutoriの設定が"PipStep > TakeProfit"である前提で記述してあるので、BreakEvenの対象は最新ポジションのみにしています。最新ポジションが決済されれば次に新しいポジションがBreakEvenの対象となります。
しかし「一番最初のポジションだけ」というのは一番古いポジションということですよね。コードの不具合かもしれませんので、もう少し状況を説明して頂けると助かります。

それと別ですが、現在のコードだとOrderModify error 1のエラーが発生することがあるので一部修正をお願いします。

3:[121用決済条件]
コード: 全て選択
//121用決済条件
//買ポジ決済
   double Current_Profit_Buy = Bid-LastPrice;
   if((UseTakeProfit)&&(pos1>0)&&(TPf>TakeProfit)&&(Current_Profit_Buy>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSEBUY,Mc1Number);
   if(UseBE && pos1>0 && Current_Profit_Buy > BE_margin*Point && LastStopLossPrice+0.5*Point < LastPrice) BreakEven_Function(Mc1Number);//add for Break Even
//売ポジ決済
   double Current_Profit_Sell = LastPrice-Ask;
   if((UseTakeProfit)&&(pos2>0)&&(TPf>TakeProfit)&&(Current_Profit_Sell>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSESELL,Mc1Number);
   if(UseBE && pos2>0 && Current_Profit_Sell > BE_margin*Point&& LastStopLossPrice-0.5*Point > LastPrice) BreakEven_Function(Mc1Number);//add for Break Even
polarB
 
記事: 41
登録日時: 2008年12月29日(月) 20:51

Re: Firebirdについて

投稿記事by take2 on 2010年1月30日(土) 10:16

polarB様
早速のご回答、修正コード有り難う御座います。
書き間違えで一番最初のポジションではなpolarB様が書かれている通り
一番新しいポジションのみブレークイーブンが実行されています。

ナンピン無しで使わせて頂いていたのですが最近ナンピンを使用する事があり
2~3回ナンピンする場合においてTP40で半分の15~20pipsでブレークイーブンへと設定していますが
TP寸前で反転して一番新しいポジションが同値撤退、残りはSLにかかる事が数回ありました。
今はナンピンの使用をやめていますが、バックテストでナンピンありやTPの1/3超えたら
ブレークイーブン等色々試しているのですが全てのポジションが一時はブレークイーブンのポイントを
越えていたのに届かず反転で同値とSLを見ると実運用に投入するのに躊躇してしまいます。
また全てにブレークイーブンが実行された場合の成績も見たいというのもあります。
TPや見直す点は他に色々あるかもしれませんが全てのポジションに同値が機能すると有難いです。
お手数ですがご検討ください。
take2
 
記事: 3
登録日時: 2010年1月28日(木) 12:46

Re: Firebirdについて

投稿記事by polarB on 2010年1月30日(土) 17:08

take2 さんが書きました:最近ナンピンを使用する事があり2~3回ナンピンする場合においてTP40で半分の15~20pipsでブレークイーブンへと設定していますがTP寸前で反転して一番新しいポジションが同値撤退、残りはSLにかかる事が数回ありました。

色々な設定を試されているのですね。興味深いです。確かにTP40でしたら全てのポジションに適応されない場合があります :oops:
下記コードを試してみて下さい。最新以外のポジションもチェックするようにしました。ただし、少しでもOrderSelect処理を減らすために"最新ポジションがBreakEvenポイントを超えている場合のみ"という条件は残しています。不必要なら削除して下さい。

3:[121用決済条件]
コード: 全て選択
//121用決済条件
//買ポジ決済
   double Current_Profit_Buy = Bid-LastPrice;
   if((UseTakeProfit)&&(pos1>0)&&(TPf>TakeProfit)&&(Current_Profit_Buy>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSEBUY,Mc1Number);
   //if(UseBE && pos1>0 && Current_Profit_Buy > BE_margin*Point && LastStopLossPrice+0.5*Point < LastPrice) BreakEven_Function(Mc1Number);//add for Break Even
   if(UseBE && pos1>0 && Current_Profit_Buy > BE_margin*Point) BreakEven_Function2(Mc1Number);//add for Break Even
//売ポジ決済
   double Current_Profit_Sell = LastPrice-Ask;
   if((UseTakeProfit)&&(pos2>0)&&(TPf>TakeProfit)&&(Current_Profit_Sell>(TakeProfit*Point)))ClosePositions(0,SIGNAL_CLOSESELL,Mc1Number);
   //if(UseBE && pos2>0 && Current_Profit_Sell > BE_margin*Point&& LastStopLossPrice-0.5*Point > LastPrice) BreakEven_Function(Mc1Number);//add for Break Even
   if(UseBE && pos2>0 && Current_Profit_Sell > BE_margin*Point) BreakEven_Function2(Mc1Number);//add for Break Even

4:BreakEven2コード追加
コード: 全て選択
void BreakEven_Function2(int MagicNumberF)
{
   int Error ;
   int Total = OrdersTotal()-1;
   for(int i=Total;i>=0;i--) {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == false) break;
     if(OrderMagicNumber() != MagicNumberF || OrderSymbol() != Symbol()) continue;
     {
      int type = OrderType();
      switch(type)
         {
         case OP_BUY:
                  if((Bid - OrderOpenPrice() < BE_margin*Point)
                     ||(OrderStopLoss()+0.5*Point > OrderOpenPrice())
                    )continue;
                  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Yellow);
                  Error = GetLastError();
                  if(Error!=0) Print("Break Even Error OrderTicket = ", OrderTicket());
               break;
         case OP_SELL:
                  if((OrderOpenPrice() - Ask < BE_margin*Point)
                     ||(OrderStopLoss()-0.5*Point < OrderOpenPrice())
                    )continue;
                  OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Yellow);
                  Error = GetLastError();
                  if(Error!=0) Print("Break Even Error OrderTicket = ", OrderTicket());
               break;     
         }
      }
   }
}
polarB
 
記事: 41
登録日時: 2008年12月29日(月) 20:51

Re: Firebirdについて

投稿記事by take2 on 2010年1月31日(日) 13:50

polarB様有難うございます。
全てのポジションで同値移動が出来ています。感謝です。
少し試した感じではPFは少し上昇、利益は少し下がる感じでした。また色々いじってみたいと思います。

たまにあるリバウンドの殆ど無い急進急落での大きなDDを除けば微益逃げを含め連勝率が高いので
TP・SLを1:1等でSLを小さ目にして何とか上手くいかないかなと考えています。
急進急落も指標ストップ機能等で少しは回避出来るんではないかとも感じています。
一方通行に動きやすい投信設定の日やオプションのストップ、キリの良い節目の数字のストップを刈った時等の
大きな動きの回避が出来るようになれば更に安定するのではないかと思っていますが難しいですね。
BT後のチャートを見て裁量ではエントリーし辛い良い所でエントリーしている事が多いと思いますので
カーブフィッティングになり過ぎない様にじっくり色々弄ってみて良い結果が出ればご報告いたします。
有り難う御座いました。
take2
 
記事: 3
登録日時: 2010年1月28日(木) 12:46

Re: Firebirdについて

投稿記事by reinhard on 2010年5月10日(月) 19:25

ご指導お願いします

こちらで紹介されている重要指標停止機能とTP10を超えたらSLを0にするのが紹介されていますが、うまく動作しません。
どなたかどのバージョンでもいいので両方入れたのアップしてもらえませんか?
reinhard
 
記事: 3
登録日時: 2009年8月21日(金) 14:16

戻る

Return to EA(自動売買)

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]

---- 友情リンク ----
FXDD Japan
cron