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

 
Sergstuddek :


클래식도 좋지만 어쨌든 문제가 있습니다))))

이론적으로는 이해하지만 실제로는 작동하지 않습니다. 제 코드를 보고 무엇이 잘못되었는지 말할 수도 있습니다.

나는 이것이 단순한 조언자라는 것을 이해하지만 나는 이제 막 여행을 시작하고 있습니다))) 이미 문제가 있습니다

// 어드바이저의 본질은 먼저 구매를 위한 첫 번째 주문을 여는 것입니다.
// 그런 다음 두 방향으로 정류장을 설정합니다.
// 이미 열린 주문의 연속으로 한 방향으로
// 차트 반전의 경우 다른 두 배
// 정류장은 EA가 연 마지막 주문과 관련하여 설정됩니다.
// 새로운 보류 주문이 새로 열릴 때마다 모든 이전 주문이 삭제됩니다.
// 그리고 새로운 미결 정류장은 새로운 오픈 주문과 관련하여 이미 열려 있습니다.


스탑이라는 용어는 스탑 오더(이익실현 및 손절매)와 스탑 오더(Buystop 및 Sellstop)의 두 가지로 이해할 수 있습니다. "발"이라는 용어가 의미하는 바는 아마도 당신에게만 명확할 것입니다. 정확한 용어로 부탁드립니다. 컴퓨터는 정확한 지시를 받아야 합니다. 이에 대한 설명도 가능한 한 정확해야 합니다.
 
drknn :
스탑이라는 용어는 스탑 오더(이익실현 및 손절매)와 스탑 오더(Buystop 및 Sellstop)의 두 가지로 이해할 수 있습니다. "발"이라는 용어가 의미하는 바는 아마도 당신에게만 명확할 것입니다. 정확한 용어로 부탁드립니다. 컴퓨터는 정확한 지시를 받아야 합니다. 이에 대한 설명도 가능한 한 정확해야 합니다.

중지 명령의 부정확성에 대해 사과드립니다. 중지 지연을 의미합니다(Baystop 및 Selstop).
 
Sergstuddek :

중지 명령의 부정확성에 대해 사과드립니다. 중지 지연을 의미합니다(Baystop 및 Selstop).
 void DeleteStopOrders()
{
   int res;
   for ( int i= 0 ;i< OrdersTotal ();i++)
  {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==false) break ;
     if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGIC)
    {
       if (OrderType()==OP_SELLSTOP)
        res=OrderDelete(OrderTicket());
       if (OrderType()==OP_BUYSTOP)
        res=OrderDelete(OrderTicket());
     }
  }
}


이 함수는 올바르게 작성되지 않았습니다. 주문은 주문 목록의 마지막에서 첫 번째 순서로 정렬해야 합니다. 삭제 후 주문 목록이 해당 위치로 이동하기 때문에 반복 방법으로 인해 1개의 주문을 건너뜁니다. 주기는 다음과 같이 구성되어야 합니다.

 for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--){

또한 주문이 선택되지 않은 경우 중단할 필요가 없습니다. 사이클을 종료할 필요가 없습니다. 주문이 선택되지 않은 이유를 찾아야 합니다. 다음과 같습니다.

 if (! OrderSelect (i,SELECT_BY_POS,MODE_TRADES)) {
   Print ( "При выборе ордера № " ,i, " произошла ошибка № " , GetLastError ());

res=OrderDelete(OrderTicket()); - 이것도 충분히 정확하지 않습니다. OrderDelete() 함수는 부울 유형입니다. 그리고 주문을 삭제하라는 명령을 내리는 것 외에도 주문을 삭제할 수 없는 상황을 처리해야 합니다. 다음과 같습니다.

res=OrderDelete(OrderTicket());
if (!res){
   Print ( "Ордер № " ,OrderTicket(), " удалить не получилось - ошибка № " , GetLastError ());
}

나머지는 나중에 볼게요.

 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if (CalculateCurrentOrders1( Symbol ())== 0 )
   OpenBuy();
   if (CalculateCurrentOrders2( Symbol ())<= 1 )
  DeleteStopOrders();
   if (CalculateCurrentOrders2( Symbol ())<= 1 )
   OpenStops();
//----
   return ( 0 );
}

시작 기능 코드가 잘못 작성되었습니다.

추가하는 첫 번째 기능은 매수 및 매도 주문입니다. 매수 주문과 매도 주문을 별도로 계산해야 합니다. 그게 바로 문제 야. 시장에 1개의 매수 주문이 있는 경우 증가된 랏으로 매수 정지를 해야 합니다. 권리? 그리고 시장에 매도 주문이 있으면 바이스톱은 일반 로트에 배치하고 매도 스톱은 증가된 로트에 배치해야 합니다. 하나의 기능에서 매수 및 매도 주문을 합산하면 시장에서 어떤 주문을 열었는지 어떻게 알 수 있습니까? 이러한 사실에 비추어 코드를 변경하십시오.

 

브로커에서 기록을 자동으로 다운로드하는 방법을 알려주시겠습니까? 그리고 집에서 1시간 동안 누르는 것은 왠지 불편합니다.

 
_dude_ :

브로커에서 기록을 자동으로 다운로드하는 방법을 알려주시겠습니까? 그리고 집에서 1시간 동안 누르는 것은 왠지 불편합니다.

Vadim Zhunko가 당신을 돌봤습니다. 히스토리 로딩 스크립트 . 데이터베이스에 몇 가지가 더 있습니다(스크립트 섹션).
 
gince :

지표 질문입니다.

교차 표시기. 한 방향으로 많은 화살표를 그린 다음 다른 방향으로 많이 그립니다. 첫 번째 것만 그려지도록 하는 방법. 코드에 있는 그대로 해봤는데 전환시 타임프레임이 바뀝니다.

제대로 하는 방법을 알려주세요.


지표를 살펴봐야 합니다. 해결책이 있을지도 몰라
 
nemo811 :
조언자를 수정하도록 도와주세요. 그것이 설치된 차트에서 통화 쌍의 주문(사용자가 소유하고 열림)과 함께 작동하도록 해야 합니다. 손익이 확정되는 순간을 말합니다. 현재 버전에서는 조건이 발생하면(예금의 % 캡처) 모든 쌍에 대해 모든 위치(MAGIC=0)를 닫으려고 시도하지만 저는 이것이 필요하지 않습니다. 모든 통화 쌍을 완전히 분리해야 합니다. 미리 감사드립니다.

그리고 다른 브랜치에 같은 것을 쓰는 것은 이미 스팸이며 금지받을 수 있습니다.
 
Vinin :

그리고 다른 브랜치에 같은 것을 쓰는 것은 이미 스팸이며 금지받을 수 있습니다.

미안 해요 - 항상 그렇듯이 한 번에 모든 것을 원합니다))
 

많은 관심과 이해 부탁드립니다))

나는 스스로 문제를 해결할 수 있었다.

까다로운 줄 삽입 if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC) 계속;

똑같이 까다로운 곳으로. 그 후 모든 것이 의도한 대로 작동했습니다.

마법의 팁 감사합니다. 저는 프로그래머가 아니기 때문에 가끔 무지해서 생각을 하지 않습니다.