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

 
Vinin :

빅터, PM 좀 봐주세요.
 
glasha :
빅터, PM 좀 봐주세요.

보았다
 
dimon74 :

OrderSend()는 모든 틱에서 발생합니다(내가 이해한 대로). 문제를 해결하려면 시작 함수 앞에 변수를 선언하십시오(예: int H=0 ).

추가 코드:

...........

만약 ( H==0)

{

주문보내기(ㅋㅋㅋㅋ);

}

H=1;

그리고 대수학이 필요하지 않습니다. 그리고 제한을 위해 OrdersTotal() 을 사용하지 않는 것이 좋습니다.


이것은 이해할 수 있습니다. 모든 것이 저에게 효과적입니다. 즉, 1 개의 주문을 열고 다음 틱이 열리지 않는다는 것을 의미합니다.

두 번째 주문, 두 번째 주문은 첫 번째 주문이 닫힐 때만 필요합니다.

 

내가 틀리지 않았다면 아마도 그렇게 되었습니까?

정수 H=0;

int F=주문 총계();

...........

if(F<1)

{

만약 ( H==0)

{

주문보내기(ㅋ ㅋㅋㅋ );

}

H=1;}

 
gheka :

내가 틀리지 않았다면 아마도 그렇게 되었습니까?

정수 H=0;

int F=주문 총계();

...........

if(F<1)

{

만약 ( H==0)

{

주문보내기(ㅋㅋㅋㅋ);

}

H=1;}

total = CountTrades();
if (total < 1 ) {
ticket = OrderSend
}

int CountTrades() {
   int count = 0;
   for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
      OrderSelect(trade, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         if (OrderType() == OP_SELL || OrderType() == OP_BUY) count++;
   }
   return (count);
}
 
gheka :


이것은 이해할 수 있습니다. 모든 것이 저에게 효과적입니다. 즉, 1 개의 주문을 열고 다음 틱이 열리지 않는다는 것을 의미합니다.

두 번째 주문, 두 번째 주문은 첫 번째 주문이 닫힐 때만 필요합니다.

이봐.
 

모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.

#재산권 "제이크 선더스"

#속성 링크 "feloq@mail.ru"



#define STATE_SQUARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- 입력 매개변수

extern int MAPeriod=26;
외부 이중 LotNumber=1.0;
extern 이중 후행 정지 = 50;
외부 이중 손절매 = 50;


//---- 전역 변수

int 현재 상태;

int MyOrderTicket;

//+----------------------------------------------- --------------------+

//| 전문가 초기화 기능 |

//+----------------------------------------------- --------------------+

정수 초기화()

{

//----

if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])

현재 상태 = STATE_SHORT;

그렇지 않으면 현재 상태 = STATE_LONG;

내 주문 티켓 = 0;
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----
실수;
더블마;
MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0);
if (현재 상태 == STATE_LONG)
{
if (MA > Close[1]) // 이동 평균이 종가보다 높음
{
현재 상태 = STATE_SHORT;
// 팔기 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 롱 포지션이 성공적으로 마감되었습니다.
//--- 이제 매도 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
또 다른
{
if (MA < Close[1]) //이동평균이 종가보다 낮음
{
현재 상태 = STATE_LONG;

//구매를 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 숏 포지션이 성공적으로 마감되었습니다.
//--- 이제 매수 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
//----
리턴(0);
}

 

여러분, 말씀해주세요! 양초가 만료될 때 포지션을 열고 닫는 방법은 무엇입니까? 즉, 새 양초가 열리면 열리고 닫힙니다.

같은 양초나 다른 양초를 닫을 때? 모든 포지션 개시 조건에 대해 캔들 종가에서 표시기의 값을 취하는 방법은 무엇입니까?

 
gheka :

나는 거의 50-100 포지션에 대해 같은 가격으로 매수 및 매도 주문을 열었습니다.

내가 실수하지 않은 경우 하나의 주문만 열도록 하는 방법 OrdersTotal()

그렇다면 어떻게 사용합니까? 그리고 어디에 넣을까? 그렇지 않으면 이 기능이 없으면 전체 대수학을


트랜잭션에 대한 잘못된 조건은 두 MA에 대한 예를 참조하십시오.
 
Superjake :

모두에게 좋은 하루. 나는 조언자를 쓰는 데 강하지 않고이 문제를 연구하려고했지만 이제 막 시작했고 나에게는 매우 어렵습니다. 가격이 이동 평균을 넘을 때 거래를 시작하고 가격이 다시 교차할 때 손절매나 후행 정지를 통해 거래를 마감하는 Expert Advisor를 작성하고 싶습니다. 그런 고문의 예를 찾았지만 후행 스탑이나 스탑로스가 없고 단순히 교차로에서 거래가 열리고 닫힙니다. 나 자신도 지식이 부족하다. 후행 정지 및 정지 손실을 삽입해야 하는 사람과 올바르게 작동하도록 하는 방법을 알려주십시오.

#재산권 "제이크 선더스"

#속성 링크 "feloq@mail.ru"



#define STATE_SQUARE 0

#define STATE_LONG 1

#define STATE_SHORT 2



//---- 입력 매개변수

extern int MAPeriod=26;
외부 이중 LotNumber=1.0;
extern 이중 후행 정지 = 50;
외부 이중 손절매 = 50;


//---- 전역 변수

int 현재 상태;

int MyOrderTicket;

//+----------------------------------------------- --------------------+

//| 전문가 초기화 기능 |

//+----------------------------------------------- --------------------+

정수 초기화()

{

//----

if (iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0) > 닫기[0])

현재 상태 = STATE_SHORT;

그렇지 않으면 현재 상태 = STATE_LONG;

내 주문 티켓 = 0;
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----
실수;
더블마;
MA = iMA(NULL, 0, MAP 기간, 0, MODE_EMA, PRICE_CLOSE, 0);
if (현재 상태 == STATE_LONG)
{
if (MA > Close[1]) // 이동 평균이 종가보다 높음
{
현재 상태 = STATE_SHORT;
// 팔기 위해 뒤집기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Bid, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 롱 포지션이 성공적으로 마감되었습니다.
//--- 이제 매도 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_SELL, lotNumber, 입찰, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
또 다른
{
if (MA < Close[1]) //이동평균이 종가보다 낮음
{
현재 상태 = STATE_LONG;

//구매를 위해 넘기기
//---열린 경우 위치를 닫습니다.
if (MyOrderTicket != 0)
{
if (!OrderClose(MyOrderTicket, LotteNumber, Ask, 3, CLR_NONE))
{
오류 = GetLastError();
Print("위치 닫기 오류: ", err);
리턴(0);
}
내 주문 티켓 = 0;
}
새로 고침();
//--- 숏 포지션이 성공적으로 마감되었습니다.
//--- 이제 매수 포지션을 엽니다.
//--- 사용 가능한 자금 확인
MyOrderTicket = OrderSend(Symbol(), OP_BUY, lotNumber, Ask, 3, 0, 0,
NULL, 0, 0, CLR_NONE);
if (MyOrderTicket<0)
{
오류 = GetLastError();
Print("위치 열기 오류: ", err);
내 주문 티켓 = 0;
}
}
}
//----
리턴(0);
}


이 예를 확인하십시오