YYY, 얼마나 많은 사람들이 이 스레드의 주제와 일치하는 문구를 머리 속에 가지고 있는지 궁금합니다. :)
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Victor Pavljuk" #property version "1.03" input int TakeProfit= 538 ; input int StopLoss= 1000 ; input int TradeTime= 13 ; input int t1= 7 ; input int t2= 1 ; input int delta= 70 ; input double lot= 5 ; bool cantrade= true ; double Ask; double Bid; int OpenLong( double volume= 5 , int slippage= 10000 , string comment= "" , int magic= 888 ) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action= TRADE_ACTION_DEAL ; my_trade.symbol= Symbol (); my_trade.volume= NormalizeDouble (volume, 1 ); my_trade.price= NormalizeDouble (Ask, _Digits ); my_trade.sl= NormalizeDouble (Ask-StopLoss* _Point , _Digits ); my_trade.tp= NormalizeDouble (Ask+TakeProfit* _Point , _Digits ); my_trade.deviation=slippage; my_trade.type= ORDER_TYPE_BUY ; my_trade.type_filling= ORDER_FILLING_RETURN ; my_trade.comment=comment; my_trade.magic=magic; ResetLastError (); if ( OrderSend (my_trade,my_trade_result)) { Print ( "Код результата операции - " ,my_trade_result.retcode); } else { Print ( "Код результата операции - " ,my_trade_result.retcode); Print ( "Ошибка открытия ордера = " , GetLastError ()); } return ( 0 ); } int OpenShort( double volume= 5 , int slippage= 10000 , string comment= "" , int magic= 888 ) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action= TRADE_ACTION_DEAL ; my_trade.symbol= Symbol (); my_trade.volume= NormalizeDouble (volume, 1 ); my_trade.price= NormalizeDouble (Ask, _Digits ); my_trade.sl= NormalizeDouble (Ask-StopLoss* _Point , _Digits ); my_trade.tp= NormalizeDouble (Ask+TakeProfit* _Point , _Digits ); my_trade.deviation=slippage; my_trade.type= ORDER_TYPE_SELL ; my_trade.type_filling= ORDER_FILLING_RETURN ; my_trade.comment=comment; my_trade.magic=magic; ResetLastError (); if ( OrderSend (my_trade,my_trade_result)) { Print ( "Код результата операции - " ,my_trade_result.retcode); } else { Print ( "Код результата операции - " ,my_trade_result.retcode); Print ( "Ошибка открытия ордера = " , GetLastError ()); } return ( 0 ); } int OnInit () { return ( 0 ); } void OnDeinit ( const int reason){} void OnTick () { double Open[]; MqlDateTime mqldt; TimeCurrent (mqldt); int len; MqlTick last_tick; SymbolInfoTick ( _Symbol ,last_tick); Ask=last_tick.ask; Bid=last_tick.bid; ArraySetAsSeries (Open, true ); if (t1>=t2)len=t1+ 1 ; else len=t2+ 1 ; CopyOpen ( _Symbol , PERIOD_M30 , 0 ,len,Open); if (((mqldt.hour)>TradeTime)) cantrade= true ; if (! PositionSelect ( _Symbol )) // Если еще нет открытой позиции { if ((mqldt.hour==TradeTime) && (cantrade)) { if (Open[t1]>(Open[t2]+delta* _Point )) { OpenShort(lot, 10 , "" , 888 ); cantrade= false ; return ; } if ((Open[t1]+delta* _Point )<Open[t2]) { OpenLong(lot, 10 , "" , 888 ); cantrade= false ; return ; } } } return ; } //+------------------------------------------------------------------+우선 명확하게 하기 위해
함수 외부로 구조를 이동할 수 있습니다.
아니면 미끄러짐이 너무 커서 왜 그렇게 넣어?
추가 괄호 쌍이 있는 이유는 무엇입니까?
if(((mqldt.hour)>TradeTime))
다음과 같이 open 함수를 다시 작성할 수 있습니다.
void PosOpen( int trade, string symbol) { if (trade== 0 ) return ; double Price; ENUM_ORDER_TYPE Type; if (trade== 1 ) {Type= ORDER_TYPE_BUY ; Price= SymbolInfoDouble (symbol, SYMBOL_ASK );} else {Type = ORDER_TYPE_SELL ; Price= SymbolInfoDouble (symbol, SYMBOL_BID );} mytrade.PositionOpen(symbol,Type,Lot,Price, 0 , 0 , "Open" ); return ; }
Heroix :
다음과 같이 open 함수를 다시 작성할 수 있습니다.
그런 다음 최소한 어떤 라이브러리에서 기능을 가져왔는지 표시하십시오.
테스트하는 동안 로그에 메시지를 생성합니다.
2012.09.21 20:07:11 코어 1 2012.09.18 13:00:00 인스턴트 판매 실패 5.00 EURUSD at 1.30657 sl: 1.29657 tp: 1.31195 [잘못된 요청]
pavivas :
시작했어야 하는 곳입니다.
테스트하는 동안 로그에 메시지를 생성합니다.
2012.09.21 20:07:11 코어 1 2012.09.18 13:00:00 인스턴트 판매 실패 5.00 EURUSD at 1.30657 sl: 1.29657 tp: 1.31195 [잘못된 요청]
Vladon :
그런 다음 최소한 어떤 라이브러리에서 기능을 가져왔는지 표시하십시오.
#include <Trade\Trade.mqh>
그건 그렇고 기본적으로 터미널 폴더 에 있습니까? 챔프의 고문에게 적용할 필요는 없었나?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
- www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - Документация по MQL5
누가 도울 수 있습니까? 오류가 어디에 있는지 모르겠습니다. 테스트를 통과하지 못합니다.
코드:
//+----------------------------------------------- --------------------+
//| Cempionat2012.mq5 |
//| 빅터 파블류크 |
//| |
//+----------------------------------------------- --------------------+
#property copyright "Victor Pavljuk"
#속성 버전 "1.03"
입력 int TakeProfit=538;
입력 int StopLoss=1000;
입력 int TradeTime=13;
입력 정수 t1=7;
입력 정수 t2=1;
입력 정수 델타 = 70;
입력 더블 로트=5;
bool cantrade=참;
이중 질문;
이중 입찰;
int OpenLong(이중 볼륨=5,
정수 미끄러짐 = 10000,
문자열 주석="",
정수 마법 = 888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=심볼();
my_trade.volume=NormalizeDouble(볼륨,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
my_trade.deviation=미끄러짐;
my_trade.type=ORDER_TYPE_BUY;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=댓글;
my_trade.magic=마법;
재설정 마지막 오류();
if(OrderSend(my_trade,my_trade_result))
{
Print("작업 결과 코드 - ",my_trade_result.retcode);
}
또 다른
{
Print("작업 결과 코드 - ",my_trade_result.retcode);
Print("주문 열기 오류 = ",GetLastError());
}
리턴(0);
}
int OpenShort(이중 볼륨=5,
정수 미끄러짐 = 10000,
문자열 주석="",
정수 마법 = 888)
{
MqlTradeRequest my_trade;
MqlTradeResult my_trade_result;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=심볼();
my_trade.volume=NormalizeDouble(볼륨,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
my_trade.deviation=미끄러짐;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=댓글;
my_trade.magic=마법;
재설정 마지막 오류();
if(OrderSend(my_trade,my_trade_result))
{
Print("작업 결과 코드 - ",my_trade_result.retcode);
}
또 다른
{
Print("작업 결과 코드 - ",my_trade_result.retcode);
Print("주문 열기 오류 = ",GetLastError());
}
리턴(0);
}
int OnInit()
{
리턴(0);
}
무효 OnDeinit(const int 이유){}
무효 OnTick()
{
이중 열기[];
MqlDateTime mqldt;
시간 현재(mqldt);
의도;
MqlTick last_tick;
SymbolInfoTick(_Symbol,last_tick);
묻다=last_tick.ask;
입찰가=last_tick.bid;
ArraySetAsSeries(열기, 참);
if(t1>=t2)len=t1+1;
그렇지 않으면 len=t2+1;
CopyOpen(_Symbol,PERIOD_M30,0,len,Open);
if(((mqldt.hour)>TradeTime)) cantrade=true;
if(!PositionSelect(_Symbol))// 아직 열린 포지션이 없는 경우
{
if((mqldt.hour==TradeTime) && (캔트레이드))
{
if(열기[t1]>(열기[t2]+delta*_Point))
{
OpenShort(lot,10,"",888);
캔트레이드=거짓;
반품;
}
if((열기[t1]+delta*_Point)<열기[t2])
{
OpenLong(lot,10,"",888);
캔트레이드=거짓;
반품;
}
}
}
반품;
}
//+----------------------------------------------- --------------------+