2018年5月23日水曜日

EA SMOOTHの比較テスト

EA SMOOTH(仮称)の比較テストです。

左がリアル口座 右はBACKTESTの結果です。

14回中11回は同じ分に動作しています。
①5/15 15:30にアメリカ小売売上高の発表がありました。
ここでフォワードはbuy-sell-buyとエントリーをしていますが、バックテストはbuy-buy-buyです。時間にもズレがあります。指標発表の時の激しい動きはバックテスト(3-5-3)では再現できないといったところでしょうか。
②5/21 03:54:49のbuyがバックテストでは欠けています。
中値ですね。ここも激しく動きましたので再現が出来ていないようですね。

価格のずれは以下の通りです。
±0x1
±20x2
±30x3
-60x1
-110x1指標発表
+430x1指標発表
トータルでは100の差異があります。
平均すると一回当たり10未満ですね。なかなか優秀です。

高速、安定型を目指したのですが利益が少ないのがネックですね。


2018年5月20日日曜日

マルチ通貨 EAの作り方

今日はマルチ通貨対応のEAを開発してみます。
通常は通貨ペア指定をSymbol()にしてチャートの通貨ペアを使用します。
””やNULLも同じ意味です。

このシンボルを USDJPY の様に指定するとチャートの通貨ペア以外を選ぶことが出来ます。業者によっては _USDJPY や USDJPY.oj5k の様になっていることもありますので、気配値表示を参照にして下さい。※重要

簡単なEAを作ります。

void OnTick(){
if(iRSI(Symbol(),PERIOD_CURRENT,14,PRICE_CLOSE,0)<30
&&!OrdersTotal())
{
int RV=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,Ask-0.1,Ask+0.1);
}
}

EA適応したチャート Symbol() のRSIが30を下回り、かつポジションを持っていない時にEA適応したチャートの通貨で買い発注します。

USDJPYとEURUSDをそれぞれ一つのEAで発注する時はこんな感じになります。
初めにUSDJPYのRSIを判定し条件が合えばUSDJPYの発注をします。
初めにEURUSDのRSIを判定し条件が合えばEURUSDの発注をします。

void OnTick(){
if(iRSI("USDJPY",PERIOD_CURRENT,14,PRICE_CLOSE,0)<30
&&!OrdersTotal())
{
int RV=OrderSend("USDJPY",OP_BUY,0.1,Ask,5,Ask-0.1,Ask+0.1);
}

if(iRSI("EURUSD",PERIOD_CURRENT,14,PRICE_CLOSE,0)<30
&&!OrdersTotal())
{
    RV=OrderSend("EURUSD",OP_BUY,0.1,Ask,5,Ask-0.001,Ask+0.001);
}
}

TakeProfitとStopLossも桁が変わるので変更しています。

※OnTick()はチャートのティック(価格)が変動した時に動作します。
上のソースをUSDJPYに適応した時にはUSDJPYの価格が動いた時に動作するのでEURUSDはタイミングが合わないかもしれません。

これを回避するにはOnTimer()を使用します。
int OnInit()
{
EventSetMillisecondTimer(30);
return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
EventKillTimer();
}

void OnTimer(){
if(iRSI("USDJPY",PERIOD_CURRENT,14,PRICE_CLOSE,0)<30
&&!OrdersTotal())
{
int RV=OrderSend("USDJPY",OP_BUY,0.1,Ask,5,Ask-0.1,Ask+0.1);
}

if(iRSI("EURUSD",PERIOD_CURRENT,14,PRICE_CLOSE,0)<30
&&!OrdersTotal())
{
    RV=OrderSend("EURUSD",OP_BUY,0.1,Ask,5,Ask-0.001,Ask+0.001);
}
}
OnInit()内にEventSetMillisecondTimer(30);を指定します。
30msごとにOnTimer()を動作させると設定します。

void OnDeinit(const int reason)
{
EventKillTimer();
}

こちらは終了処理です。必ず入れて下さい。
OnTick()をOnTimer()に変更します。
これで価格が動く、動かないにかかわらず30ms毎に動作します。

※OnTimer()はバックテストでは動作しません。

また、複数通貨ペアのEAをOnTick()でバックテストした時に選択した通貨ペア以外は発注されません。通貨ペア毎にバックテストをしてエクセルか何かで合成してください。
















2018年5月14日月曜日

Smooth君 取引一回目

EAを開発してフォワードテストの期間は大変長く感じるものです。
前回のSmooth君 金曜午後にフォワードを開始一回目の取引がありました。



スクショ貼り付けましたが小さいですね・・・

上はフォワードテスト(OANDA TY3 5k 0.1Lot)
09:43:44 BUY 109.307
09:46:01  Close  109.320 130円の利益

下はバックテスト 0.1Lot
09:43        BUY 109.307
09:46         Close 109.318 110円の利益です。

美味しいほうに少しずれていますが、バックテストに似た取引が出来そうです。

しばらくは観察期間ですね






2018年5月10日木曜日

また危険なEAを作ってしまいました・・・

HMAを使用して少し開発をしてみました。

まずは固定ロットで開発し連勝、連敗の具合を見てロットコントロールを加えるのがTACA流の開発です。
1,000,000円開始 期間は3年3カ月 純益1141万円
2005年からスタートさせてVシステムを搭載すれば10億もしくは100億越えかもしれませんね。
もう少し改良してフォワードしてみようと思います。

ちなみにこちらはスプレッド3ですがスプレッド6ですと純益は半分になります。
O社TY3、T社1,000通貨など面白いかもしれませんね。

発売する時は証券会社としっかりネゴしてからですね♪



HMAの計算方法

HULL Moving Average 略してHMAは非常に現在のプライスに近くなめらかと評判の平均です。
今は無きゴゴジャンの中井さんが退社直前に教えてくれたのですが、使ってみると評判通りでした。リペイントする物でもこれだけのものはなかなかありません。
インジケーターとしては何度か開発をしたことがあるのですが、
EAに組み込むために関数を作成してみます。

計算式はまずpHMA(期間)=LWMA(期間/2)*2-LWMA(期間)を作成します。

このpHMAのLWMA(期間の平方根)がHMAになります。

iMAに追加できればいいのですが今回はiHMAとして作成します。

iMAは下記のようになっています。
※公式サイトは違う記述になっていますがこちらが今のMetaEditorに会っているかと思います。


double  iMA(
   const string       symbol
   ,ENUM_TIMEFRAMES timeframe    
   ,int ma_period     
   ,int ma_shift       
   ,ENUM_MA_METHOD ma_method    
   ,ENUM_APPLIED_PRICE applied_price 
   ,int shift=0)
これに準じた形にします。


double iHMA(
   const string symbol=NULL
   ,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT
,int period=13
,int ma_shift=0
,ENUM_MA_METHOD ma_method=MODE_LWMA
,ENUM_APPLIED_PRICE applied_price=PRICE_MEDIAN
,int shift=0)

全てにデフォルトで値を入れていますのでiHMA()だけでも期間13のLWMA使用MEDIANのシフト0で値を出します。

pHMA[]を宣言しArrayResizeで要素数を決めます。
宣言時は[]もしくは数値しか指定できませんのでこのようにしています。

あとは先ほどの計算式に則りreturnで数値を戻します。

double iHMA(const string symbol=NULL
,ENUM_TIMEFRAMES timeframe=PERIOD_CURRENT
,int period=13
,int ma_shift=0
,ENUM_MA_METHOD ma_method=MODE_LWMA
,ENUM_APPLIED_PRICE applied_price=PRICE_MEDIAN
,int shift=0)
{
double pHMA[];
ArrayResize(pHMA,period+2);
for(i=period+1;i>=0;i--)
{
pHMA[i]=iMA(symbol,timeframe,(period/2),ma_shift,ma_method,applied_price,shift)*2 - iMA(symbol,timeframe,period ,ma_shift,ma_method,applied_price,shift);
}
return (iMAOnArray(pHMA,0,(int)MathSqrt(period),ma_shift,ma_method,shift));
}

この関数の特徴
■引数がiMAと同様
■初期値がすべて入っている為省略が可能
■HMAはLWMAを使用するがSMA,EMA、SMMAも使用する事が出来る。
■価格を選択できる

さて、これを使ってなにか開発しましょうかw




2018年5月8日火曜日

番外編 ルーレット戦略@ノルウェイジャンジュエル

ルーレットについて非常に関心のある方が多かったようなので少し書いてみます。
少し趣旨と離れますがわたしのEA開発の原点がここにあります。

今回は先日乗ったノルウェイジャンジュエルのカジノをベースに書きます。

ルーレットにも何種類かあります。
並び方は大きく四つ緑0が一つのヨーロッパスタイル、マカオスタイル(最近はマカオでも少なくなってきました。)0と00のあるアメリカンスタイル(韓国もこれです)
そしてメキシカンスタイル0と00と000があります。
0は赤でも黒でもないのでアウトサイド(赤黒、偶数奇数、大小、3倍)に賭けた時は無慈悲にもはずれとなります。
0が一つの時は1÷37=2.70%の控除率です。
0,00の時は2÷38=5.26%
10回連続でゲームをするとシングル0の時の資金は76%に
ダブルゼロ0,00の時には58.2%になります。
出来るだけシングル0のところ(マカオ、ヨーロッパ)でやりたいものです。

この控除分がカジノの儲けに見えますが、実際はこれだけではありません。
ディーラーは好きなところに球を落とすことが出来ます。
多少ずれる事はありますが...

ノルウェイジャンジュエルではMIN2$の最低5枚以上からかけることが出来ます。
MAXは200$です。マーチンゲールをすると4連敗で上限に達します。

そこで、船室で考えた戦略が変則モンテカルロです。
通常モンテカルロは4枚からスタートしますが最低五枚です。
はじめは3倍に5枚ベットします WIN終了+10 LOSE 6枚ベット
二回目 WIN終了+7 LOSE7枚ベット
三回目 WIN終了+3
確立では31.5%の確率でWINとなりますので勝てるはずですが3連続負ける時もあります。
以降+1枚ずつ増やしていきます。
四、五、六回目は2回勝利で終了
七、八、九回目は3回勝利で終了とします。

これでほぼほぼ勝てます。

賭けるところはたて列2 to 1です。
ココの面白いところは真ん中は黒が多く、右は赤が多い事です。

今回は赤のトレンドが発生していたので右列に賭けます。
この時ベットする時は常に同じ場所にします。
動かさないといつか当たるという点とディーラーとの心理戦です。

ロットをコントロールしながらゲームを進めるとディーラーは目を付けてきます。
当たった時にチップを返すときに枚数を間違え始めた時にディーラーはこう考えます。
「こいつめんどくせーな早く退治しよう」



ここでテーブルを見てみます。
0から左に2,14,35,23と並んでいます。
これはすべて真ん中の列です。

ちなみに33,21,6,18と36,24,3,15この二つは右の列です。

右の列に賭け続けると16~28をディーラーは狙い始めます。
多少ずれても3の倍数(右列)が出ないからです。

実際このあと14が二連続で出ました。
二回目にはfourteen again!と自慢げにディーラーがいいます。
もうここは チャンスですね。

ディーラーが球を投げる時どっち回転で0がどこの位置で投げるかを常に観察します。
これで14に落ちた時と同じ位置で投げた場合ほぼ狙ってきます。

ディーラーが投げた後に0,2,14,28にドガンとベットしたところ球が落ちる前にディーラーがあぶら汗を流していました。さっきまで右列しかベットしていなかったのにいきなりなぜ!といったところでしょうか
そして2におちます!

この後はディーラーが構えるので別のテーブルに移動します。
Hit& Awayです。




まとめると
①ベットコントロールで凌ぎながら同じところに賭け続けます。
②心理的にディーラーの落とすところを導きます。
③ディーラーがどの位置で投げるかを常に観察します。
④勝ったらそそくさと逃げましょう~♪

さて4回程勝負に行きましたが、無敗です!
TACA的ストラテジーいかがでしょうか~








2018年5月6日日曜日

帰国とくまのみさんのソース解説

さーて、わたし的に第三期と呼んでいるEA開発ライフです。
第一期はGSKを退職しのんびりとAMSERなど開発していた時です。
第二期はゴゴジャンで出品者サポートに回っていた時期です。
サポートと言っても色々教えていただく毎日でしたが

そしてゴゴジャンを退職して第三期が今です。
退職しマカオへ半週間、そしてマレーシアのゲンティン(カジノ)のクルーズ船に一週間のってきました。
この時の体重が80.5kg デブになってしまいました。
そして朝はささみ、昼はささみ、よるもささみで毎日ジムへ通い始めます。



何と28日で10.5kg痩せました!!70kgです。
会う人みんながすごいBUTリバウンド怖いよ~的な事をいいます。
そしてGWにノルウェイジャンジュエルというクルーズ船に乗ってきました。
ルーレットを4日ほどしましたが無敗です!!
ベットコントロールと心理戦、ヒットアンドウェイ(勝ち逃げw)そして投げるスピードと落下地点の推測をすればルーレットでは負ける気がしません。

そして体重が...7日で75kgです。
プチリバウンドw
ある程度船でもジムに通ったのですがやはりインプットが多いといくら運動(アウトプット)をしてもダメなようです。

さて、クルーズが始まり高知に着いた頃にくまのみさんからシンボルについて質問を頂きました。携帯で返信をしていたためあまり上手く伝えられなかったかもしれません。
簡単な解説を書いてみたいと思います。

以下頂いたソース

string TUUKA; ←TUUKAを文字列として使用する宣言
extern string TA_1 = "EURUSD"; TA_1を文字列として使用する宣言初期値はEURUSD externが付いている物は設定で変更できます。
extern string TA_2 = "GBPUSD"; 上と同じ  TA_2の初期値はGBPUSD
extern string TA_3 = "USDCHF"; 
extern string TA_4 = "EURCAD";
extern string TA_5 = "USDCAD";
extern string TA_6 = "AUDCAD";
extern string TA_7 = "AUDNZD";
extern string TA_8 = "EURUSD";

TUUKA = TA_1; TUUKAにTA_1の値を入れます。TUUKAはGBPUSDです。
TUUKA = TA_2; TUUKAにTA_2の値を入れます。TUUKAはUSDCHFです。
TUUKA = TA_3;
TUUKA = TA_4;
TUUKA = TA_5;
TUUKA = TA_6;
TUUKA = TA_7;
TUUKA = TA_8;  TUUKAにTA_8の値を入れます。TUUKAはEURUSDです。
TUUKA = Symbol() ; TUUKAにSymbol()をいれます。TUUKAは現在のチャートの通貨ペアです。
int start() {
if (StringSubstr(Symbol(), 0, 6) != TUUKA || Period() != PERIOD_M30) return (1);




int start(){     }この中身はティックが動くたびに動作します。
StringSubstr(Symbol(), 0, 6)  StringSubstrは文字列の中から文字を取り出します。
この場合Symbol()の0文字目から6文字とりだします。
チャートの通貨ペアがUSDJPYの場合U~YまでとりだしますのでUSDJPYとなります。
通貨ペアにおまけがついていることがあります。
例えばUSDJPY-a01 この場合は0文字目のU~6文字YまでとりますのでUSDJPYとなり-a01が無くなります。
!=は等しくない場合 ちなみに==は等しい場合です。
||はorです。

USDJPYのチャートで通貨ペア表示が6文字の場合
StringSubstr(Symbol(), 0, 6)はUSDJPY
TUUKA 今はSymbol()はUSDJPY となります。
同じです。

最後のreturn(1)はティックルーチンから出る命令ですので、StringSubstr(Symbol(), 0, 6)とTUUKAが異なる場合はこの続きの発注やらなんやらが動かなくなります。

今回の場合は同じですので動きます。

チャートの名前におまけがついている場合 例えばUSDJPY-a01
StringSubstr(Symbol(), 0, 6)はUSDJPY
TUUKA 今はSymbol()はUSDJPY-a01 となります。

USDJPYとUSDJPY-a01は異なりますので動作しなくなります。

通貨ペアの縛りを無くすには
if (StringSubstr(Symbol(), 0, 6) != TUUKA || Period() != PERIOD_M30) return (1);
if (Period() != PERIOD_M30) return (1);
にします。

タイムフレームの縛りを無くす場合は
if ( Period() != PERIOD_M30) return (1);

両方無くす場合は
if (StringSubstr(Symbol(), 0, 6) != TUUKA || Period() != PERIOD_M30) return (1);
すべて消しましょう。


う~ん長文失礼します!






2018年4月23日月曜日

EdelWeiss販売再開

かつて出品したEA EdelWeissについてご質問を頂きました。
OANDA TY3 5K、楽天、FXTFで動かしていますが、好調です。
ゴゴジャンを辞めてしまって少し恐縮なのですが、
早川社長から送別会で出品の許可を頂きましたので
販売再開にしてみようと思います!









2018年4月22日日曜日

【考察】週末クローズについて

週末クローズについて考えてみます。
最近多いのですが備忘録的なものです。

週末クローズで多いのは金曜日23時(MT4時間)にポジションをクローズし発注も制限するといった物です。
★一定の時間にポジションクローズし、発注を制限する。
時間は23時と書きましたが20時のものや21時22時などなど色々とあります。

ここで気になるのが20時にポジションクローズと発注制限を同時に仕掛けるものです。
発注制限をかけた後もしばらく持っているポジションはクローズしなくてもいいのではないでしょうか。
★一定の時間移行発注を制限し一定時間後にポジションを持っている時にはクローズする。(ex.金曜20時以降は新規発注をしない、23時にポジションを持っていたらクローズする。

もう一つ気になることがあります。
NYクローズ前にはレートの偏りはないでしょうか
ロングポジションとショートポジションの時間は同じでいいかどうかという事です。
過去データーを引き出してみます。


2005年~金曜日20時移行のデーターを分析してみました。
5分足です。青は終値から始値をひいた値の合計です。
オレンジは陽線÷すべての回数です。
金曜日に限定しない時は23時~極端なドル高の傾向があるのですが、
金曜日は違うようです。

青線で見ると20:45~21:45はドル高のようです。
オレンジで確認した場合20:55-21:25がドル高傾向
また23時前後にもピークがあります。

円高はピークが三つあります。
22:45 23:25 23:45です。


LONG
21:45新規発注制限開始
21:45以降利益が出ていればクローズ
23:10すべてのポジションをクローズ

SHORT
20:45新規発注制限開始
20:45以降利益が出ていればクローズ
23:45すべてのポジションクローズ

こんな感じがよさそうです









2018年4月20日金曜日

モンテカルロ EAとソースコード

取りあえずベースとなるモンテカルロのソースコードを作成してみました。
RSIでエントリーしていますが全くダメですねw

エントリーとそれにあったTPの大きさを見つけて下さい。
PRINTにカラムを表示していますので、みてください!


#property strict
input int Magic=11111;
input string Comments="MonteTACA-USDJPY-M1";
input double BaseLots=0.1;
input double TP=0.02;
int Monte[50],nMonte,d,i,Ticket;

double Vol;
string Sym=Symbol();

int OnInit()
{
for(i=0;i<3;i++){Monte[i]=i+1;}
nMonte=3;
Vol=BaseLots*4;
string Com="";
for(i=0;i<nMonte;i++){Com+=(string)i+" : "+(string)Monte[i]+" \n";}
Print (Com);
return(INIT_SUCCEEDED);}

void OnTick()
{
if(GetLastError()){Print(GetLastError());ExpertRemove();}
int NoP=Pos();
if(NoP && OrderSelect(Ticket,SELECT_BY_TICKET))
{
if(OrderType()==OP_BUY)
{
if(OrderOpenPrice()>Bid+TP)Lose();
if(OrderOpenPrice()<Bid-TP*2)Get();
}
if(OrderType()==OP_SELL)
{
if(OrderOpenPrice()<Ask-TP)Lose();
if(OrderOpenPrice()>Ask+TP*2)Get();
}
}



//++ Entry Logic ++
if(!NoP&&iRSI(Sym,PERIOD_CURRENT,20,PRICE_HIGH,0)<30

)
{
Ticket=OrderSend(Sym,OP_BUY,Vol,Ask,0,Bid-TP*2,Bid+TP*4,Comments,Magic);
Print("OpenLong: "+(string)Vol);
}
if(!NoP&&iRSI(Sym,PERIOD_CURRENT,20,PRICE_LOW,0)>70

    )
        {
        Ticket=OrderSend(Sym,OP_SELL,Vol,Bid,0,Ask+TP*2,Ask-TP*4,Comments,Magic);
Print("OpenShort: "+(string)Vol);
}
//+++++++++++++++++
}//OnTick()





//Get :Close Positin & Set Column
void Get()
{
if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0))
{
if (nMonte<6)
{
for(i=0;i<nMonte;i++){Monte[i]=0;}
for(i=0;i<3;i++){Monte[i]=i+1;}
nMonte=3;
Vol=BaseLots*4;
}
else
{
for(i=0;i<nMonte-2;i++)
{Monte[i]=Monte[i+2];}
Monte[i-2]=0;
Monte[i-1]=0;
nMonte-=4;
Vol=BaseLots*(Monte[0]+Monte[nMonte-1]);
}
string Com="Get";
for(i=0;i<nMonte;i++){Com+=(string)i+" : "+(string)Monte[i]+" \n";}
Print (Com);
}
}
//Lose :Close Position & Set Column
void Lose()
{
if(OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0))
{
Monte[nMonte]=(int)(OrderLots()/BaseLots);
Vol= (Monte[0]+Monte[nMonte])*BaseLots;
nMonte++;
string Com="Lose";
for(i=0;i<nMonte;i++){Com+=(string)i+" : "+(string)Monte[i]+" \n";}
Print (Com);
}
}

//Check Number of Position
int Pos()
{
int cnt = 0;
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS)&&OrderMagicNumber()==Magic){cnt++;}
}
return(cnt);}

モンテカルロ法 考察 TACA的ベットコントロール

カジノのベットコントロールの戦略でモンテカルロ法があります。

3倍ベットのところでするのがスタンダードな方法です。

ルーレットインサイドのサイドにある1st12,2nd12,3rd12と
ボトムにある2to1三か所がよく使われます。

ちなみにインサイドの2点、4点ベットをすると2,5,8~の列が重なりやすくなりますので、2to1の真ん中はディーラーが一般的によく狙うところからずれて配置されています。2to1の場合両端がねらい目ですね。
すいている時で資金に余裕がある時はこれでも大丈夫です。出やすい黒を狙う戦略ですね。31,33はヨーロピアンスタイルではOrphelinsかその隣にあるので外しています。

さらにディーラー殺しの戦略がこちら!くわしく書くと大変な量になるので省略しますがディーラーが10回投げるとほぼ一回は0が出ます。0周りを攻めます。ディーラーと1v1の時はダメですよw1USD程度で賭けれるカジノで使える配置です。

さて話が大きくそれましたが、モンテカルロ法のやり方です。初めにカラムを三つイメージします。1,2,3 この両端を足した数をBETします。
初めは1+3で4 負けた時には先程のベット額4をカラムに足します。
カラムは1,2,3,4となっています。次にベットするのは1+4で5です。
勝った場合は両端から二個ずつカラムを削ります。1,2,3,4の左端から二個の1,2と右端から二個の3,4を削ります。カラムが無くなりましたこれで終了です。
カラムが0もしくは1になると終了です。
2回負けて1回勝った場合はこのようになります
1,2,3      BET 4(1+3) 負
1,2,3,4    BET 5(1+4) 負
1,2,3,4,5  BET 6(1+5) 勝
3 終了 9枚失い12枚勝ちました。平均ベットは5、合計3枚の利益です。

5枚ずつ三回かけた時は10枚失い10枚勝ち取り±0です。

つまりベットコントロール自体でもうけを増やすことが出来ます。
しかし欠点があります。マーチンゲールのような破綻的な上昇ではありませんが、
勝ち負けを繰り返すとベット数が増えてしまいます。

勝ち負けを繰り返すより連勝、連敗傾向がある方が効果的です。

これをFXに応用します。FXで固定三倍では面白くありません。
トレーリングストップの場合三倍固定ということが出来ません。
よくある手法では平均価格に合わせてベットをコントロールしますが、この場合ベットコントロール自体の意味合いが薄くなります。

そこで!少し考えてみました。
①トレーリングの特性
TP/SL3PIPS程度のEAは4PiPS程度のトレールが有効(経験則)
②マーチンゲールの特性
カラムベットの根幹は過去の負けの少し大きめのベットをする。

4Pipsのトレイルの場合(USDJPY 1LOT=100,000通貨ペア)
①0.1 lotエントリー4PIPs 400jpy lose
②0.11lotエントリー2PIPs 220jpy lose total -620jpy
③0.12lotエントリー6PIPs 720jpy win total +100jpy

6PIPs 負けて 6PIPs勝った場合 +100jpyとなります。

勝率33%です。

原点に戻ると勝率もリスクリワードも関係なく利益がすべてです。
TP/SLが固定出ない場合でもこれでベットコントロールができました。

手法
①初めに0.1LOTエントリーする。
②負けたら0.01LOT追加してエントリーをする。
③勝った時には初めから合計がトータルプラスになれば①に戻る。

次に買ったけれども負けが残っている場合を考えます。
①0.1 lotエントリー4PIPs 400jpy lose
②0.11lotエントリー2PIPs 220jpy lose total -620jpy
③0.12lotエントリー4PIPs 480jpy win total -140jpy
④0.13lotエントリー2PIPs 260jpy lose total -260jpy
⑤0.14lotエントリー2PIPs 280jpy win total    20jpy

使用ロットは0.6lot  8PIPs負けて6PIPs勝ちました。
-2Pips 負けているにも関わらず20jpyの利益です。

この手法が出来る証券会社はトレールを使用する為ストップレベルの無い証券会社
最小0.1lotからエントリーでき0.01lotステップでエントリーできる会社ですね。
OANDA TY3,PRO 楽天といったところでしょうか。

他もいいところがあったら教えて下さいね~