[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 67

 

여보세요

나는 작가가 되기로 결심했다. 나는 외국어 MQL 4로 뭔가를 쓰고 싶었습니다. 그것에 대해 뭔가를 읽었습니다. 글쎄, 줄거리는 RSI 위치를 여는 간단한 전문가를 작성하기 위해 태어났습니다. 8의 기간으로 70을 교차하고 위치를 닫습니다. 레벨 30을 넘고 아무 일도 일어나지 않습니다. 작성했습니다. 여기에 코드가 있습니다.

//+----------------------------------------------- --------------------+
//| 4doc.mq4 |
//| 알렉스 |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#재산권 "알렉스"
#속성 링크 "http://www.metaquotes.net"

//---- 입력 매개변수
외부 정수 PerRSI=8;
외부 정수 MagicNumber=77771;

extern 이중 로트=1.0;

/+------------------------------------------------ ------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
정수
cnt=0,
티켓,
총;
더블
rsi_0, // 값. rsi_0 현재
rsi_1; // 값. rsi_1 첫 번째 막대
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
rsi_0=iRSI(NULL,0, PerRSI,0,0); // 현재 막대
rsi_1=iRSI(NULL,0, PerRSI,0,1); // 현재 막대에 1을 더한 값
총계=주문총계();
if(총<1)
if(rsi_0 < rsi_1 && rsi_0 > 70) // 선이 70을 넘으면
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My RSI", MagicNamber,0,Green);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
for(cnt=0;cnt<전체;cnt++)
{
새로 고침();
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // 오픈 포지션인가요? OP_BUY or OP_SELL
OrderSymbol()==Symbol()) // 기기가 일치합니까?
{
if(OrderType()==OP_SELL) // 열린 말뭉치
{
if(rsi_0 > rsi_1 && rsi_0 < 30) // 선이 30을 넘으면
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 포지션을 닫는다
리턴(0); // 출구

}}}}}}

나는 그것을 테스트했고 모든 것이 기본적으로 다음과 같습니다. 원했다. SS I 때 코드를 변경하기로 결정 – 14는 레벨 100을 교차합니다. – 선택 위치가 열렸고 위치가 닫혔을 때 레벨을 넘어 - 100. RSI 변경 SS I 의 코드 , 그가 있다.

//+----------------------------------------------- --------------------+
//| CCI-DOC.mq4 |
//| 알렉스 |
//| http://www.metaquotes.net |
//+----------------------------------------------- --------------------+
#재산권 "알렉스"
#속성 링크 "http://www.metaquotes.net"

//---- 입력 매개변수
extern int PerCCI=14;
외부 정수 MagicNumber=88881;

extern 이중 로트=1.0;

//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
정수
cnt=0,
티켓,
총;
더블
cci_0, // 값. cci_0 현재
cci_1; // 값. cci_1 첫 번째 막대
if(막대<100)
{
Print("100개 미만의 막대");
리턴(0);
}
cci_0=iRSI(NULL,0, PerCCI,0,0); // 현재 막대
cci_1=iRSI(NULL,0, PerCCI,0,1); // 현재 막대에 1을 더한 값
총계=주문총계();
if(총<1)
if(cci_0 < cci_1 && cci_0 > 100) // 라인이 100을 넘었을 때
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My CCI", MagicNamber,0,Green);
if(티켓>0)
{
if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))
Print("판매 주문이 열렸습니다 : ",OrderOpenPrice());
}
else Print("판매 주문 열기 오류: ",GetLastError());
리턴(0);
}
for(cnt=0;cnt<전체;cnt++)
{

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // 오픈 포지션인가요? OP_BUY or OP_SELL
OrderSymbol()==Symbol()) // 기기가 일치합니까?
{
if(OrderType()==OP_SELL) // 열린 말뭉치
{
if(cci_0 > cci_1 && cci_0 < -100) // 선이 교차하는 경우 -100
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,바이올렛); // 포지션을 닫는다
반환(0); // 출구
}}}}}}

CCI 가 되다 시험….. 글쎄, 아무 일도 일어나지 않고, 팔지 않고, 사지 않고, 로그에 오류가 없습니다. 테스트가 끝나면 곡선 차트가 열리지만 이것은 CC I 이 아니라 RSI 70-30 14의 기간 ... .. 아마도 숙련 된 작가 중 한 명이 이해하고 해결하는 이유와 방법을 말할 것입니다.

 
pepsi писал(а) >>
그러면 잡지의 데모에서 모든 것이 더 명확하게 그려질 것입니다. 오류를 찾을 위치가 더 명확합니다. 그 자신...

고맙습니다

 

또 안녕!!!!!!!

/unobtrussively/;-)) Mashka의 거래 조건에 대한 64페이지의 내 질문을 상기시켜 드리고 싶습니다 ... 미리 감사드립니다(찻주전자를 두드리는 것에 대해)

 

여러분, 터미널에서 한 거래 상품의 여러 다른 시간 차트를 사용하면

프로그램에서 트래픽을 어떻게 소비합니까? 최소 기간의 트래픽이 소비됩니까, 아니면 모든 기간의 트래픽이 소모됩니까?

 
igrok2008 >> :

또 안녕!!!!!!!

/unobtrussively/;-)) Mashka의 거래 조건에 대한 64페이지의 내 질문을 상기시켜 드리고 싶습니다 ... 미리 감사드립니다(찻주전자를 두드리는 것에 대해)

 int start ( )
  {
//----
    double MA_0 = iMA ( NULL , 0 , pMA , pSh , mode , price , 0 ) ;
    double MA_1 = iMA ( NULL , 0 , pMA , pSh , mode , price , 1 ) ;

    перед использованием в коде open_1 или  open_0 их нужно инициализировать , т . е . объяснить программе
    к виду каких данных эти опены относятся ( целые , дробные , строчные , логические )

    double open_0 = Open [ 0 ] ; //  double - дробное число. 0 и 1 это номера ячееек,
    double open_1 = Open [ 1 ] ; // которые в данном случае являются номерами баров
        
    if ( MA_1 < Open [ 1 ] & & MA_0 > Open [ 0 ] )
     if ( CheckOrders ( OP_SELL ) ) //продажа
      {
       if ( ! OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 3 , 0 , 0 , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Buy. Ошибка №" , GetLastError ( ) ) ; 
       }
       
    if ( MA_1 > Open [ 1 ] & & MA_0 < Open [ 0 ] )
     if ( CheckOrders ( OP_BUY ) ) //покупка
      {
       if ( ! OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 3 , 0 , 0 , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Sell. Ошибка №" , GetLastError ( ) ) ; 
       }
//----
   return ( 0 ) ;
  }
 
KONDOR >> :

답변 해주셔서 감사합니다!!!

1. 명확히 하자면, double open_0과 double_1이 있는 두 행은 이중 MA 행보다 먼저 작성되어야 합니다. 그렇지 않으면 중요하지 않습니까 ???????...

2. 거래 조건에서 open[0,1]을 open_0,1로 바꿀 수 있습니다 ????????.....

 
igrok2008 >> :

답변 해주셔서 감사합니다!!!

1. 명확히 하자면, double open_0과 double_1이 있는 두 행은 이중 MA 행보다 먼저 작성되어야 합니다. 그렇지 않으면 중요하지 않습니까 ???????...

2. 거래 조건에서 open[0,1]을 open_0,1로 바꿀 수 있습니다 ????????.....

1. 중요하지 않음

2. 수

 

도와주세요... 물론 제가 게으른 것일 수도 있지만 데모 또는 실제 계정 에서 거래하기 위해 프로그램을 연결하는 방법을 알 수 없습니다... 무엇을 써야 하는지, 어디에 노래를 불러야 하는지, 잘 부탁드립니다... 미리 감사드립니다!))

 
쓰기 - 테스터에서 작성, 거래되었지만 데모 또는 실제 거래를 원하지 않으며 일반적으로 신호가 없지만 (((
 
keekkenen >> :

1. 중요하지 않음

2. 수

CGFCB<J 즉, 감사합니다!!!!