|
//+------------------------------------------------------------------+
//| FF_EA_BollingerBand.mq4 |
//| FruitFOREX |
//| https://www.FruitFOREX.com |
//+------------------------------------------------------------------+
#property copyright "FruitFOREX"
#property link "https://www.FruitFOREX.com"
#property version "3.0"
#property strict
#include <stdlib.mqh>
input double Lotsize=1.0;
input int Slippage=10;
input int Stoploss=30; //손절매 포인트 값
input int Takeprofit=50; //이익실현 포인트 값
input int MagicNumber=4989; //EA 고유번호(매직넘버)
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double up_signal=iCustom(NULL,0,"FF_Indicator_BollingerBand",3,0);
double down_signal=iCustom(NULL,0,"FF_Indicator_BollingerBand",4,0);
if(OrdersTotal()==0 && up_signal != EMPTY_VALUE)
{
//--- Buy 주문
MarketOrder_Open(OP_BUY);
}
else if(OrdersTotal()==0 && down_signal != EMPTY_VALUE)
{
//--- Sell 주문
MarketOrder_Open(OP_SELL);
}
}
//+------------------------------------------------------------------+
//| 시장가 주문 개설 함수 |
//+------------------------------------------------------------------+
void MarketOrder_Open(int order_type)
{
int ticketNum;
if(order_type==OP_BUY)
{
ticketNum=OrderSend(Symbol(),OP_BUY,Lotsize,Ask,Slippage,0,0,
"EA 고유번호:"+(string)MagicNumber,MagicNumber,0,clrGreen);
if(ticketNum!=-1)
{
if(OrderSelect(ticketNum,SELECT_BY_TICKET)==true)
{
if(OrderModify(ticketNum,0,OrderOpenPrice()-Stoploss*Point,
OrderOpenPrice()+Takeprofit*Point,0,clrGreen)==true)
{
}
else //OrderModify 함수에서 에러발생
{
Error_Handle("OrderModify");
}
}
else //OrderSelect 함수에서 에러발생
{
Error_Handle("OrderSelect");
}
}
else //OrderSend 함수에서 에러발생
{
Error_Handle("OrderSend");
}
}
else if(order_type==OP_SELL)
{
ticketNum=OrderSend(Symbol(),OP_SELL,Lotsize,Bid,Slippage,0,0,
"EA 고유번호:"+(string)MagicNumber,MagicNumber,0,clrRed);
if(ticketNum!=-1)
{
if(OrderSelect(ticketNum,SELECT_BY_TICKET)==true)
{
if(OrderModify(ticketNum,0,OrderOpenPrice()+Stoploss*Point,
OrderOpenPrice()-Takeprofit*Point,0,clrGreen)==true)
{
}
else //OrderModify 함수에서 에러발생
{
Error_Handle("OrderModify");
}
}
else //OrderSelect 함수에서 에러발생
{
Error_Handle("OrderSelect");
}
}
else //OrderSend 함수에서 에러발생
{
Error_Handle("OrderSend");
}
}
}
//+------------------------------------------------------------------+
//| 에러처리 함수 |
//+------------------------------------------------------------------+
void Error_Handle(string error_info)
{
int error_code=GetLastError();
ResetLastError();
Alert("에러정보: ",error_info,"\n에러코드: ",error_code,"\n에러설명: ",ErrorDescription(error_code));
}
//+------------------------------------------------------------------+
첫댓글 감사합니다