シンプルスキャルピング
//+------------------------------------------------------------------+
//| morningScal.mq4 |
//| Copyright 2018, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#include <stdlib.mqh>
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
double hour9price = 0.0;
double hour11price = 0.0;
int ordeticket = 0;
extern double LOTS = 0.04;
extern int MAGIC = 62634; //マジックナンバー
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create timer
EventSetTimer(60);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy timer
EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
}
//+------------------------------------------------------------------+
//| Timer function |
//+------------------------------------------------------------------+
void OnTimer()
{
//---
if(Hour() == 3 && Minute()== 0)
{
hour9price = Ask;
}
if(Hour() == 5 && Minute()== 0)
{
hour11price = Ask;
if(hour9price < hour11price)
{
// まずはSL/TPなしで発注
ordeticket=OrderSend(Symbol(),OP_BUY,LOTS,Ask,100,0,0,"buy",MAGIC,0,clrYellow);
if(ordeticket == -1)
{
Print("###Order Buy 001");
Print(ErrorDescription(GetLastError()));
return;
}
// OrderPriceが確定してから、TP/SLを設定
if(OrderSelect(ordeticket,SELECT_BY_TICKET)==true)
{
double openPrice = OrderOpenPrice();
double currentSL = NormalizeDouble(openPrice - 0.1,Digits);
double currentTP = NormalizeDouble(openPrice + 0.1,Digits);
if(!OrderModify(ordeticket,Bid,currentSL,currentTP,0,clrYellow))
{
Print("###Order Buy Modify 002");
Print(ErrorDescription(GetLastError()));
}
}
}else if(hour9price > hour11price){
// まずはSL/TPなしで発注
ordeticket=OrderSend(Symbol(),OP_SELL,LOTS,Ask,100,0,0,"sell",MAGIC,0,clrYellow);
if(ordeticket == -1)
{
Print("###Order Sell 001");
Print(ErrorDescription(GetLastError()));
return;
}
// OrderPriceが確定してから、TP/SLを設定
if(OrderSelect(ordeticket,SELECT_BY_TICKET)==true)
{
double openPrice = OrderOpenPrice();
double currentSL = NormalizeDouble(openPrice + 0.1,Digits);
double currentTP = NormalizeDouble(openPrice - 0.1,Digits);
if(!OrderModify(ordeticket,Ask,currentSL,currentTP,0,clrYellow))
{
Print("###Order Sell Modify 002");
Print(ErrorDescription(GetLastError()));
}
}
}
}
if(Hour() == 9 && Minute()== 0)
{
if(OrdersTotal() > 0)
{
if(!OrderClose(ordeticket,LOTS,Bid,1000,clrAliceBlue))
{
Print("###exit");
Print(ErrorDescription(GetLastError()));
};
}
}
}
//+------------------------------------------------------------------+
OnTimeイベントで1分間隔で価格をチェックし、9時と11時の価格を比較して、上がってたら買い、下がってたら売りでエントリし、±0.1円で利食い損切しています。
そして、15時になったら強制決済しています。
これは、
日本の日中は、USDJPYの値動きが小さく、トレンドも比較的シンプルである
という経験則に由来しています。
最初は9時と10時で価格を比較していたのですが、その期間だと、日中全体のトレンドとは逆になることも多いので、9時と11時の比較にしてみました。
何か質問があったらコメントください。
ECN口座で運用するのがコツ
kabuステーションAPIでトレードしていて思ったのですが、手数料があってもスプレッドが小さいことのほうが、スキャルピングを行う上では本当に重要です。
いろいろ抵抗がある人はいるかと思いますが、私はスキャルピングは海外FX業者のECN口座で行うことをお勧めします。
コメント