도움말 - 새 랩톱을 구입했습니다. - Windows 8이 거기에 설치되어 있습니다. - Alpari에서 최신 업데이트된 터미널을 다운로드했습니다. - 이전에 작업한 표시기를 MQL4 폴더에 로드합니다. 표시기 - 표시기는 거기에 표시되지만 터미널에는 없습니다. 사용자 인터페이스 자체에서 지원 서비스는 실제로 아무 것도 작성하지 않습니다. 어떻게 해야 합니까?
galinka : 도움말 - 새 랩톱을 구입했습니다. - Windows 8이 거기에 설치되어 있습니다. - Alpari에서 최신 업데이트된 터미널을 다운로드했습니다. - 이전에 작업한 표시기를 MQL4 폴더에 로드합니다. 표시기 - 표시기는 거기에 표시되지만 터미널에는 없습니다. 사용자 인터페이스 자체에서 지원 서비스는 실제로 아무 것도 작성하지 않습니다. 어떻게 해야 합니까?
시스템 메뉴 "파일"에 "데이터 디렉토리 열기"라는 새 항목이 있습니다. 이제 거기에 넣어야 합니다.
이것은 티켓이 어딘가에서 이전 버전에서 여전히 사용된다는 것을 의미합니다. 코드를 정리해야 하는데...
다음과 같이 했습니다.
Symb= Symbol (); // Название фин.инстр.
Total= 0 ; // Количество ордеровint order[ 7 ]; //буффер для семи ордеровint ord; //количество ордеровArrayInitialize (order, 0 );//обнуляем количество ордеровfor ( int i= 1 ; i<= OrdersTotal (); i++) // Цикл перебора ордер
{
if ( OrderSelect (i- 1 , SELECT_BY_POS )== true ) // Если есть следующий
{ // Анализ ордеров:if ( OrderSymbol ()!=Symb) continue ; // Не наш фин. инструмif ( OrderType ()> 1 ){ Alert ( "Обнаружен отложенный ордер. Эксперт не работает." ); return ;}
Total++; // Счётчик рыночн. ордif (Total> 7 ){ Alert ( "Более 7 ордеров. Эксперт не работает." ); return ;}
Ticket= OrderTicket (); // Номер выбранн. орд.
Tip = OrderType (); // Тип выбранного орд.order [ OrderType ()]++; // ПОЛУЧАЕМ КОЛИЧЕСТВО ОРДЕРОВ
Price = OrderOpenPrice (); // Цена выбранн. орд.
SL = OrderStopLoss (); // SL выбранного орд.
TP = OrderTakeProfit (); // TP выбранного орд.
Lot = OrderLots (); // Количество лотов
}
}
ord=order [ OrderType ()];while ( true ) // Цикл закрытия орд.
{
if (Tip== 0 && Cls_B== true ) // Открыт ордер Buy..
{ //и есть критерий закрAlert ( "Попытка закрыть Buy " ,Ticket, ". Ожидание ответа.." );
RefreshRates (); // Обновление данных
Ans= OrderClose (Ticket,Lot, Bid , 2 ); // Закрытие Buyif (Ans== true ){ Alert ( "Закрыт ордер Buy " ,Ticket); if (ord == 0 ){ Alert ( "Закрыты все ордера " ,ord); break ;} }
if (Fun_Error(GetLastError())== 1 ) // Обработка ошибокcontinue ; // Повторная попыткаreturn ; // Выход из start()
}
포지션은 완전히 닫힙니다. 사실, 오류는 0이며 오류가 없음을 의미하는 부두에 기록됩니다. 그리고 로그에서 "Closed all orders" 메시지를 찾을 수 없습니다.
굵은 글씨는 변경된 라인을 강조 표시했습니다. 작동하는 것 같지만 아직 철저히 테스트하지 않았습니다.
나는 사이클이 어떻게 작동하는지 잘 이해하지 못합니다. 주기의 중간에 위와 아래에 코드가 있다고 가정해 보겠습니다. 사이클의 조건이 일치하면 코드 작업이 사이클 내에서만 실행되어 코드 행이 실행되지 않습니다. 사이클 아래에 무엇이 있습니까? 이 예를 고려할 때 break 문 은 루프 를 중단합니까? 아래 행을 실행하도록 허용하거나 프로그램이 처음부터 계산을 시작합니까?
내가 틀렸다면 정정하십시오. break 는 위치가 있는 주기를 중단하고 그 위에 있는 연산자의 계산 실행을계속 합니다. 그러면 두 번째 연산자가 있는지 명확하지 않습니다. interrupted 또는 continue 는 일반적으로 모든 코드를 인터럽트하고 처음부터 코드를 실행하도록 프로그램을 보냅니다.
그러한 질문이 생겼습니다. 예를 들어 하루에 2%의 손실에 도달하면 모든 거래를 닫는 고문이나 스크립트를 작성할 수 있습니까?
할 수 있다.
도움말 - 새 랩톱을 구입했습니다. - Windows 8이 거기에 설치되어 있습니다. - Alpari에서 최신 업데이트된 터미널을 다운로드했습니다. - 이전에 작업한 표시기를 MQL4 폴더에 로드합니다. 표시기 - 표시기는 거기에 표시되지만 터미널에는 없습니다. 사용자 인터페이스 자체에서 지원 서비스는 실제로 아무 것도 작성하지 않습니다. 어떻게 해야 합니까?
나는 아마도 그것을 하는 방법을 이해하지 못했을 것입니다 - 프로그램 파일-- 나는 alpari-open이 있습니다 ---- 폴더가 있습니다---- MQL4-indikators-- 나는 삽입- 나타납니다- 닫기 --- 터미널을 엽니다 사용자가 아닙니다
감사합니다 도움이 되었습니다
마지막 외부 아래:
extern int 미끄러짐 = 2; //시장 포지션 마감 시 가격 하락
다른 것을 넣으십시오 :
extern bool total_symb = true; //모든 쌍에 대해
그리고 각 라인:
if (( OrderSymbol () == 기호 ()))
그리고
if ( OrderSymbol () == 기호 ())
이것을 교체하십시오:
if ( OrderSymbol () == 기호 () || total_symb)
이론적으로 작동해야 확인합니다.
아니, 작동하지 않습니다. 모든 것이 이전과 같습니다. 활성화된 몇 개의 차트만 닫습니다. 다른 사람들에게는 닫기 오류 4107이 표시됩니다. extern bool Buy = false에서 변경을 시도했습니다. //구매 주문의 삭제/닫기 방향
그러한 질문이 생겼습니다. 예를 들어 하루에 2%의 손실에 도달하면 모든 거래를 닫는 고문이나 스크립트를 작성할 수 있습니까?
이것은 티켓이 어딘가에서 이전 버전에서 여전히 사용된다는 것을 의미합니다. 코드를 정리해야 하는데...
다음과 같이 했습니다.
포지션은 완전히 닫힙니다. 사실, 오류는 0이며 오류가 없음을 의미하는 부두에 기록됩니다. 그리고 로그에서 "Closed all orders" 메시지를 찾을 수 없습니다.
굵은 글씨는 변경된 라인을 강조 표시했습니다. 작동하는 것 같지만 아직 철저히 테스트하지 않았습니다.
나는 사이클이 어떻게 작동하는지 잘 이해하지 못합니다. 주기의 중간에 위와 아래에 코드가 있다고 가정해 보겠습니다. 사이클의 조건이 일치하면 코드 작업이 사이클 내에서만 실행되어 코드 행이 실행되지 않습니다. 사이클 아래에 무엇이 있습니까? 이 예를 고려할 때 break 문 은 루프 를 중단합니까? 아래 행을 실행하도록 허용하거나 프로그램이 처음부터 계산을 시작합니까?
내가 틀렸다면 정정하십시오. break 는 위치가 있는 주기를 중단하고 그 위에 있는 연산자의 계산 실행을 계속 합니다. 그러면 두 번째 연산자가 있는지 명확하지 않습니다. interrupted 또는 continue 는 일반적으로 모든 코드를 인터럽트하고 처음부터 코드를 실행하도록 프로그램을 보냅니다.