MyStandardEA.mq4
//+------------------------------------------------------------------+
//| MyStandardEA.mq4 |
//| FruitFOREX |
//| https://www.FruitFOREX.com |
//+------------------------------------------------------------------+
#property copyright "FruitFOREX"
#property link "https://www.FruitFOREX.com"
#property version "1.10"
#property strict
#include <stdlib.mqh>
input double Lotsize=1.0;
input int Slippage=10;
input int Stoploss=50; //손절매 포인트 값
input int Takeprofit=100; //이익실현 포인트 값
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()
{
if(OrdersTotal()==0)
{
//--- Buy 주문
MarketOrder_Open(OP_BUY);
}
else if(OrdersTotal()==0)
{
//--- Sell 주문
MarketOrder_Open(OP_SELL);
}
}
//+------------------------------------------------------------------+
//| 시장가 주문 개설 함수 |
//+------------------------------------------------------------------+
void MarketOrder_Open(int order_type)
{
int ticketNum;
if(order_type==OP_BUY)
{
ticketNum=OrderSend(Symbol(),OP_BUY,0.001,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));
}
//+------------------------------------------------------------------+
첫댓글 위 코드의 Lotsize 를 1로 수정후 실행하였으나 에러코드 130 Invalid stops 에러가 발생합니다. 여러부분을 수정해보았지만 같은 에러가 계속 발생합니다. 무엇이 문제인지 알려주시면 너무너무 감사하겠습니다. 감사합니다.
윗코드중 일부인 아래부분에서 0.001을 Lotsize 로 바꾸어 보세요.

문사이즈는 0.01입니다.)
0.001은 유효하지 않은 값입니다. (*보통 최
0.001은 의도적으로 에러를 발생시키기 위하여 입력한 값입니다.
ticketNum=OrderSend(Symbol(),OP_BUY,0.001,Ask,Slippage,0,0,
"EA 고유번호:"+(string)MagicNumber,MagicNumber,0,clrGreen);