[아카이브!] 어드바이저를 무료로 써드립니다 - 페이지 83

 
정수 주문 보내기 ( 문자열 기호, int cmd, 이중 볼륨, 이중 가격, int 슬리피지, 이중 손절매, 이중 이익 실현, 문자열 주석=NULL, int magic=0, datetime 만료=0, color arrow_color=CLR_NONE)
포지션을 열거나 보류 주문을 하는 데 사용되는 주요 기능입니다.
거래 서버가 주문에 할당한 티켓 번호를 반환하거나 실패하면 -1을 반환합니다. 추가 오류 정보를 얻으려면 GetLastError() 함수를 호출해야 합니다.
노트:
시장가 주문(OP_SELL 또는 OP_BUY) 개시 시 Bid (매도) 또는 Ask (매수)의 최신 가격만 Open Price로 사용할 수 있습니다. 현재와 다른 보안으로 작업을 수행하는 경우 이 보안에 대한 최신 시세를 얻으려면 MarketInfo() 함수를 MODE_BID 또는 MODE_ASK 매개변수와 함께 사용해야 합니다. 계산되거나 정규화되지 않은 가격은 적용할 수 없습니다. 가격 스레드에 요청한 공개 가격이 없거나 소수점 이하 자릿수 에 따라 정규화되지 않은 경우 오류 129(ERR_INVALID_PRICE)가 생성됩니다. 요청한 시가가 완전히 오래된 경우 오류 138( ERR_REQUOTE )이 슬리피지 매개변수에 독립적으로 생성됩니다. 요청한 가격이 구식이지만 스레드에 있는 경우 현재 가격이 가격 +- 슬리피지 범위 내에 있는 경우에만 현재 가격으로 포지션이 열립니다.

StopLoss 및 TakeProfit 수준은 시장에 너무 가깝지 않아야 합니다. MODE_STOPLEVEL 매개변수와 함께 MarketInfo () 함수를 사용하여 정지 레벨의 최소 거리는 포인트 단위로 얻을 수 있습니다. 잘못되었거나 정규화되지 않은 정지 수준의 경우 오류 130(ERR_INVALID_STOPS)이 생성됩니다.

보류 주문을 할 때 공개 가격은 시장에 너무 가깝지 않아야 합니다. MODE_STOPLEVEL 매개변수와 함께 MarketInfo() 함수를 사용하여 현재 시장에서 1포인트로 보류 중인 가격의 최소 거리를 얻을 수 있습니다. 보류 중인 주문의 오픈 가격이 잘못된 경우 130 오류 (ERR_INVALID_STOPS)가 생성됩니다.

일부 거래 서버에서는 보류 주문 만료 시간 적용을 비활성화할 수 있습니다. 이 경우 만료 매개변수에 0이 아닌 값을 지정하면 오류 147(ERR_TRADE_EXPIRATION_DENIED)이 생성됩니다.

일부 거래 서버에서는 미결 및 보류 주문의 총량 이 제한될 수 있습니다. 이 한도를 초과하면 새 포지션이 열리지 않고(또는 보류 중인 주문이 배치되지 않음) 거래 서버는 오류 148(ERR_TRADE_TOO_MANY_ORDERS)을 반환합니다.
매개변수:
기호 - 거래에 대한 기호입니다.
cmd - 작업 유형. Trade 작업 열거형 중 하나일 수 있습니다.
용량 - 로트 수.
가격 - 거래의 선호 가격.
슬립 페이지 - 매수 또는 매도 주문에 대한 최대 가격 미끄러짐.
손절하다 - 정지 손실 수준.
이익을 취하다 - 이익 수준을 취하십시오.
논평 - 주문 코멘트 텍스트. 댓글의 마지막 부분은 서버에 의해 변경될 수 있습니다.
마법 - 매직넘버 주문. 사용자 정의 식별자로 사용할 수 있습니다.
만료 - 주문 만료 시간(대기 중인 주문만 해당).
arrow_color - 차트에서 시작 화살표의 색상입니다. 매개변수가 누락되었거나 CLR_NONE 값이 있는 경우 시작 화살표가 차트에 그려지지 않습니다.
 
#속성 링크 "dwgrell@gmail.com"

//--- 입력 매개변수
외부 정수 기간 = 16;
외부 정수 임계값=50;

외부 이중 로트=1;
외부 정수 k=5000;

extern bool pl=true;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
double bs=NormalizeDouble(iCustom(Symbol(),0,"Aver", 마침표,0,0),자리수);
이중 ss=NormalizeDouble(iCustom(Symbol(),0,"Aver", 마침표,1,0),자리수);
이중 tpb=NormalizeDouble(bs+(bs-ss),숫자);
이중 tps=NormalizeDouble(ss-(bs-ss), 숫자);
if(pl==true) 이중 랏=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//구매 지연기를 엽니다.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//판매 지연을 엽니다.
}
if(주문 총계()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//가장 가까운 주문을 선택합니다.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,빨간색);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,빨간색);
주문 선택(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,빨간색);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,빨간색);
}
if(OrdersTotal()==1)
{
주문 선택(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,빨간색);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,빨간색);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,Blue);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);}
}

리턴(0);
}
//+----------------------------------------------- --------------------+
 
#property link "dwgrell@gmail.com"

//--- input parameters
extern int period=16;
extern int porog=50;

extern double lot=1;
extern int k=5000;

extern bool pl=true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);//Открываем отложник на покупку.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);//Открываем отложник на продажу.
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//Выбираем ближайший ордер.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue);
//if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
//if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue);
//if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
//if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(OrdersTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {/*OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);*/
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {/*OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {/*OrderModify(OrderTicket(),bs,ss,tpb,0,Red);*/
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){/*OrderModify(OrderTicket(),ss,bs,tps,0,Blue);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
}

return(0);
}
//+------------------------------------------------------------------+
 
계정: 154603 이름: 드미트리 통화: USD 2011년 7월 12일
마감된 거래:
티켓 오픈 시간 유형 크기 안건 가격 S/L T/P 마감 시간 가격 수수료 구실 교환 이익
3705573 2011.07.12 13:57 구입 2.16 유로 1.3982 1.3973 1.4065 2011.07.12 14:13 1.3973 0.00 0.00 0.00 -194.40
3705328 2011.07.12 13:19 구입 2.01 유로 1.3924 1.3899 1.3948 2011.07.12 13:49 1.3948 0.00 0.00 0.00 482.40
3705356 2011.07.12 13:14 팔다 2.17 유로 1.3900 1.3924 1.3876 2011.07.12 13:19 1.3924 0.00 0.00 0.00 -520.80
3705285 2011.07.12 13:05 팔다 2.17 유로 1.3914 1.3924 1.3904 2011.07.12 13:11 1.3904 0.00 0.00 0.00 217.00
3705278 2011.07.12 13:04 구입 2.17 유로 1.3924 1.3914 1.3934 2011.07.12 13:05 1.3914 0.00 0.00 0.00 -217.00
3704812 2011.07.12 11:32 구입 2.40 유로 1.3959 1.3914 1.4020 2011.07.12 13:01 1.3914 0.00 0.00 0.00 -1 080.00
3704030 2011.07.12 13:01 팔다 1.88 유로 1.3914 1.3917 1.3911 2011.07.12 13:01 1.3917 0.00 0.00 0.00 -56.40
3704158 2011.07.12 10:22 구입 2.13 유로 1.3896 1.3898 1.3958 2011.07.12 11:30 1.3958 0.00 0.00 0.00 1 320.60
3704063 2011.07.12 10:12 구입 2.02 유로 1.3861 1.3834 1.3888 2011.07.12 10:21 1.3888 0.00 0.00 0.00 545.40
3704020 2011.07.12 10:05 구입 1.92 유로 1.3848 1.3834 1.3859 2011.07.12 10:12 1.3859 0.00 0.00 0.00 211.20
3704001 2011.07.12 10:04 팔다 1.95 유로 1.3837 1.3848 1.3831 2011.07.12 10:05 1.3848 0.00 0.00 0.00 -214.50
3703505 2011.07.12 10:01 구입 1.82 유로 1.3843 1.3837 1.3849 2011.07.12 10:04 1.3837 0.00 0.00 0.00 -109.20
3703920 2011.07.12 09:52 팔다 2.04 유로 1.3845 1.3843 1.3755 2011.07.12 10:01 1.3843 0.00 0.00 0.00 40.80
3703631 2011.07.12 09:12 팔다 1.88 유로 1.3892 1.3935 1.3849 2011.07.12 09:50 1.3849 0.00 0.00 0.00 808.40
3703533 2011.07.12 09:03 팔다 1.80 유로 1.3915 1.3935 1.3895 2011.07.12 09:10 1.3895 0.00 0.00 0.00 360.00
3703506 2011.07.12 09:02 팔다 1.82 유로 1.3927 1.3930 1.3924 2011.07.12 09:02 1.3930 0.00 0.00 0.00 -54.60
 
진짜로 추천하지 않습니다.
 
grell 내 손절매 가 설정되지 않았습니다
 
초저점에서 손실 을 막다
 
또는 주문에 따라 최대
 
고문의 코드를 자세히 살펴보면 그가 거세된 이유를 이해할 수 있을 것입니다. 테스터를 위해 작성했기 때문에 모든 것이 간단합니다. 그러나 이상하게도 모든 것이 작동합니다.
 
솔직히 말해서, 나는 MQL 프로그래밍을 이해하지 못합니다.