#include <Trade\Trade.mqh>
#define MAGIC (123)
//--- 입력 매개변수
input string InpFileNameOK = "ok.wav"; // success audio file
input string InpFileNameErr = "timeout.wav"; // error audio file
input ENUM_ORDER_TYPE InpOrderType = ORDER_TYPE_BUY_LIMIT; // order type
input double InpLots = 0.1; // lots
//--- 글로벌 변수
CTrade ExtTrade;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 심볼 설정에 따라 실행에 따른 매직 및 주문 유형을 설정합니다.
ExtTrade.SetExpertMagicNumber(MAGIC);
ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- 소리 재생으로 주문을 하거나 포지션에 진입하는 함수를 호출합니다.
OrderSendWithAudio();
}
//+------------------------------------------------------------------+
//| 이 함수는 주문을 하거나 포지션을 오픈합니다 |
//| 성공 또는 오류 소리를 재생합니다. |
//+------------------------------------------------------------------+
void OrderSendWithAudio(void)
{
bool res=true;
MqlTick tick= {};
ResetLastError();
if(!SymbolInfoTick(Symbol(),tick))
{
Print("SymbolInfoTick() failed. Error code: ",GetLastError());
PlaySound(InpFileNameErr);
return;
}
//--- 서버에 요청을 보냅니다
switch(InpOrderType)
{
case ORDER_TYPE_BUY :
res=ExtTrade.Buy(InpLots);
break;
case ORDER_TYPE_BUY_LIMIT :
res=ExtTrade.BuyLimit(InpLots,NormalizeDouble(tick.ask-100*Point(),Digits()));
break;
case ORDER_TYPE_BUY_STOP :
res=ExtTrade.BuyStop(InpLots,NormalizeDouble(tick.ask+100*Point(),Digits()));
break;
case ORDER_TYPE_SELL :
res=ExtTrade.Sell(InpLots);
break;
case ORDER_TYPE_SELL_LIMIT :
res=ExtTrade.SellLimit(InpLots,NormalizeDouble(tick.bid+100*Point(),Digits()));
break;
case ORDER_TYPE_SELL_STOP :
res=ExtTrade.SellStop(InpLots,NormalizeDouble(tick.bid-100*Point(),Digits()));
break;
default :
res=false;
}
if(!res)
Print("Error ",GetLastError());
Print(ExtTrade.ResultRetcodeDescription());
//--- 요청이 수락되면 ok.wav 사운드를 재생합니다.
if(ExtTrade.ResultRetcode()==TRADE_RETCODE_DONE)
PlaySound(InpFileNameOK);
else
PlaySound(InpFileNameErr);
}
|