[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 67

 

스크립트에 행을 추가했지만(BUYSTOP 및 SELLSTOP 추가) 컴파일을 원하지 않고 오류가 발생합니다. 말해봐, 무슨 일이야?

#property copyright "Copyright © 2010, Vladimir Khlystov"
#속성 링크 "cmillion@narod.ru"
#property show_inputs
//------------------------------------------------ --------------------
extern int stoploss = 0, //SL 설정 레벨, 0이면 SL이 설정되지 않음
extern int takeprofit = 0, //TP 설정 수준, 0이면 TP가 설정되지 않음
extern int 매직 = 123456; //고유 주문번호
extern 부울 BUY = 거짓; //구매 주문을 엽니다.
extern bool SELL = false, //판매 주문을 엽니다.
extern bool BUYSTOP = false, //BUYSTOP 주문을 엽니다.
extern bool SELLSTOP = false, // SELLSTOP 주문 열기
외부 이중 로트 = 0.1; //주문량
extern int 미끄러짐 = 3; //시장가 주문에 대한 최대 허용 가격 편차
//------------------------------------------------ --------------------
이중 SL,TP;
//------------------------------------------------ --------------------
정수 시작()
{
만약 (구매)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
OPENORDER("구매");
}
만약 (판매)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); elseSL=0;
OPENORDER("판매");
}
만약 (구매 중지)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
OPENORDER("매수 정지");
}
(판매 중지)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); elseSL=0;
OPENORDER("매도 중지");
}
리턴(0);
}
//------------------------------------------------ --------------------
무효 OPENORDER(문자열 순서)
{
정수 오류, 오류;
동안 (사실)
{ 오류=참;
if (ord=="구매" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"BUY",Magic,0,Blue);
if (ord=="판매") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"SELL",Magic,0,Red);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP,"BUYSTOP",Magic,0,Blue);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP,"SELLSTOP",Magic,0,Red);
if (error==-1) //잘못된 구매 확인
{
오류 표시();
err++;Sleep(2000);RefreshRates();
}
if (오류 || err >10) 반환;
}
반품;
}
//------------------------------------------------ --------------------
무효 ShowERROR()
{
int err=GetLastError();
스위치(오류)
{
사례 1: 반환;
사례 2: Alert("거래 서버에 연결되지 않았습니다. ",Symbol());return;
사례 3: Alert("잘못된 매개변수 오류",Symbol());return;
case 130: Alert("티켓 종료 오류",Symbol());return;
사례 134: Alert("돈이 부족합니다. ",Symbol()); return;
사례 146: Alert("오류 거래 하위 시스템 사용 중",Symbol());return;
사례 129: Alert("오류 잘못된 가격",Symbol()); 반환;
case 131: Alert("오류 잘못된 볼륨",Symbol());return;
case 4200:Alert("오류 개체가 이미 존재합니다. ",Symbol());return;
기본값: Alert("오류 ",err," ",Symbol());return;
}
}
//------------------------------------------------ --------------------

미리 감사합니다

 
nemo811 :

그리고 ","가 아니라 ";"로 연산자를 끝낼 수 있습니까?

 
FreeLance :

그리고 ","가 아니라 ";"로 연산자를 끝낼 수 있습니까?


고마워, 난 그냥 배우고 있어요 :))) 감사합니다.
 
nemo811 :

고마워, 난 그냥 배우고 있어요 :))) 감사합니다.

고맙습니다! 그냥 그렇게... ;)
 
FreeLance :

고맙습니다! 그냥 그렇게... ;)

:)))) 훨씬 더 불타는 질문. 이 스크립트는 시장가 주문을 열지만 보류 중인 주문은 하지 않습니다. 나는 또 뭔가를 망쳤다. 가능하다면 말해봐, 무슨 일이야?
 
nemo811 :

:)))) 훨씬 더 불타는 질문. 이 스크립트는 시장가 주문을 열지만 보류 중인 주문은 하지 않습니다. 나는 또 뭔가를 망쳤다. 가능하다면 말해봐, 무슨 일이야?

무역 아이디어는 무엇입니까?
 
나에게는 고양이라는 조언자가 있습니다. "handles"로 설정된 열린 주문은 무시됩니다. 스크립트 고양이. 나는 수정하려고하는데 "수동"주문을 마법 매개 변수가있는 주문으로 바꾸도록 설계되었습니다. 여기에 그런 아이디어가 있습니다.))
 
nemo811 :
나에게는 고양이라는 조언자가 있습니다. "handles"로 설정된 열린 주문은 무시됩니다. 스크립트 고양이. 나는 수정하려고하는데 "수동"주문을 마법 매개 변수가있는 주문으로 바꾸도록 설계되었습니다. 여기에 그런 아이디어가 있습니다.))


안녕히 주무세요!

도저히 알 수가 없어서 미루었습니다.

그러나 당신도 서두르지 마십시오. 자료를 읽어라!

조작의 언어와 대상은 단순하다...

성능이 때때로 형편없습니까?

따라서 엉성함은 양쪽에 있습니다.

;)

 

위의 코드를 수정했습니다. 지연기가 설치되어 있지 않습니다. 오류를 찾을 수 있도록 도와주세요.

#property copyright "Copyright © 2010, Vladimir Khlystov"
#속성 링크 "cmillion@narod.ru"
#property show_inputs
//------------------------------------------------ --------------------
extern int 손절매 = 0; //SL 설정 레벨, 0이면 SL이 설정되지 않음
extern int takeprofit = 0; //TP 설정 레벨, 0이면 TP가 설정되지 않음
extern int 매직 = 123456; //고유 주문번호
extern 부울 BUY = 거짓; //구매 주문을 엽니다.
extern bool SELL = 거짓; //오픈 매도 주문
extern bool BUYSTOP = 거짓; //BUYSTOP 주문을 엽니다.
extern 부울 SELLSTOP = 거짓; //SELLSTOP 주문 열기
외부 이중 로트 = 0.1; //주문량
extern int 미끄러짐 = 3; //시장가 주문에 대한 최대 허용 가격 편차
외부 정수 DistanceSet = 20; // 시장과의 거리
//------------------------------------------------ --------------------
이중 SL,TP;
//------------------------------------------------ --------------------
정수 시작()
{
만약 (구매)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
OPENORDER("구매");
}
만약 (판매)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); elseSL=0;
OPENORDER("판매");
}
만약 (구매 중지)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
OPENORDER("매수 정지");
}
만약 (판매중단)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); elseSL=0;
OPENORDER("매도 중지");
}
리턴(0);
}
//------------------------------------------------ --------------------
무효 OPENORDER(문자열 순서)
{
정수 오류, 오류;
동안 (사실)
{ 오류=참;
if (ord=="구매" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="판매") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (error==-1) //잘못된 구매 확인
{
오류 표시();
err++;Sleep(2000);RefreshRates();
}
if (오류 || err >10) 반환;
}
반품;
}
//------------------------------------------------ --------------------
무효 ShowERROR()
{
int err=GetLastError();
스위치(오류)
{
사례 1: 반환;
사례 2: Alert("거래 서버와 연결되지 않음 ",Symbol());return;
사례 3: Alert("잘못된 매개변수 오류",Symbol());return;
case 130: Alert("티켓 종료 오류",Symbol());return;
사례 134: Alert("돈이 부족합니다. ",Symbol()); return;
사례 146: Alert("오류 거래 하위 시스템 사용 중",Symbol());return;
사례 129: Alert("오류 잘못된 가격",Symbol()); 반환;
case 131: Alert("오류 잘못된 볼륨",Symbol());return;
case 4200:Alert("오류 개체가 이미 존재합니다. ",Symbol());return;
기본값: Alert("오류 ",err," ",Symbol());return;
}
}
//------------------------------------------------ --------------------

고맙습니다.

 
Dimka-novitsek :


아니요, 모든 것이 당신이 쓴 것과 완전히 반대입니다. 물론 당신의 관심을 가져 주셔서 감사합니다. 나는 열심히 생각하고, 이것 저것을 알아 냈고, 지금 당신은 착각하고 있습니다.

일반적으로, 나는 그 문제가 매도와 입찰에 있지 않으며 아직 해결하지 못했다는 것을 알았습니다.

귀하의 이상한 진술을 Pts. 생각의 요새에서 사과는 날아 가지 않지만 어쨌든 머리를 때릴 것입니다 ...

그게 다야.

아니면 모든 것이 엄밀히 반대되는 단일 국가에 살고 있습니까? 이익은 마이너스 값입니다. 스스로 생각하십시오: 1.0100의 가격에 매수하고 1.0200의 가격에 매도하십시오(테이크는 이 수준, 즉 구매 가격 보다 높음). 100pp의 이익이 있습니다. 그리고 다른 방법으로는 작동하지 않습니다. 1.0000에서 테이크를 시도하면 오류 130 - 잘못된 정지가 발생합니다. 매수 테이크(OP_BUY)는 포지션 개시 가격보다 낮을 수 없습니다. 그러나 정반대인 스톱은 매수 포지션의 시가보다 낮아야 합니다. Sell의 경우 반대가 사실입니다. 테이크는 시가보다 낮고 스탑은 더 높습니다.

재료뿐만 아니라 1학년 수학도 배워야 할 것 같은데... 실례가 되지 않습니다.