何か変わった手法はないかとネットを徘徊していたら「くるくるワイド」というものに出会った。
手法については美味しいスワップの受け取り方(本家のサイト)
第一印象はよくわからん手法。でもなんか面白そう。習うより慣れる主義なので、理解できたことから試してみることに。が、デモトレじゃ時間がかかるし、自分でレンジ幅を設定し、ロングやショートトラップの張り直しをしなくてはいけないのでEAで全自動は難しい。
で、前回のCAppDialogを使い注文する方法を思いついた訳だが、VisualModeでは動かない。
ので、テキストファイルで数値を渡す方法を考えた。
1.渡したい数値はテキストファイルに書く
2.ファイルを更新したことをEAに通知するためにチャートに矢印を書き込む
3.EAは矢印を見て、ファイルを解析動作する(上矢印なら買い注文とか、そんな感じ)
矢印のチェック関数をPickUp↓
#define EVENT_NONE 0
#define EVENT_BUY 1
#define EVENT_SELL 2
#define EVENT_EXIT 3
#define EVENT_BUYLIMIT 4
#define EVENT_SHORTTRAP 5
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CheckEvent()
{
int i;
int iObjTotal, iType, iCode;
int iEvent;
int iErr;
string sName;
iEvent = EVENT_NONE;
iObjTotal = ObjectsTotal();
for(i = 0; i < iObjTotal; i++){
sName = ObjectName(i);
iErr = GetLastError();
if(!(iErr == ERR_NO_MQLERROR || iErr == ERR_NO_ERROR)){
Print("Err=" + iErr);
continue;
}
iType = ObjectType(sName);
if(iType == OBJ_ARROW){
iCode = ObjectGet(sName, OBJPROP_ARROWCODE);
switch(iCode){
case SYMBOL_ARROWUP:
ObjectDelete(sName);
iEvent = EVENT_BUY;
break;
case SYMBOL_ARROWDOWN:
ObjectDelete(sName);
iEvent = EVENT_SELL;
break;
case SYMBOL_CHECKSIGN:
ObjectDelete(sName);
iEvent = EVENT_EXIT;
break;
case SYMBOL_THUMBSUP:
ObjectDelete(sName);
iEvent = EVENT_BUYLIMIT;
break;
case SYMBOL_THUMBSDOWN:
ObjectDelete(sName);
iEvent = EVENT_SHORTTRAP;
break;
}
}
}
return(iEvent);
}
なんかかっちょ悪いが、目的は「くるくるワイド」を勉強するなのでOK。
AUDJPY 2013.1.1〜2014.3.10でバックテストと言うか勉強した結果はこんな感じ
実施した内容は
1.ロングスワップ(2万通貨)
2.ショートトラップ(0.1万通過×10本)
3.ショートトレード(1万通過)(途中から未実施)
※枚数は$10000で2008.10の55円台に耐えられる範囲で設定
※ショート固定、ピンポン、複利ロングは未実施(つーか理解できてない・・・)
2013.5.27に建てたロングスワップ(97.5)が最後まで出口に到達できず持ちっぱなしとなったが、ショートトラップで稼いだ分でペイできたようで最終的に全ポジション決済でプラスとなった。
ただ2013.8の86円台から持ち直したからで、もしそのまま下落したら・・・。いや86円台でうろうろしたとしてもアウトか。その辺はショート固定とか、ショートトレードでなんとかする見たいだけどまだ理解できてないです。ムズいですね。
タグ:くるくるワイド