私が最近運用してるシンプルEAのMQL4ソースコード

スポンサーリンク

シンプルスキャルピング

//+------------------------------------------------------------------+
//|                                                  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口座で行うことをお勧めします。

コメント