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

 
artmedia70 :


무효 OpenBuy() {

이중 dStopLoss = 0, dTakeProfit = 0;
이중 lot_New = 제비;

if (isLossLastPos(NULL, -1, MAGIC))
많은_신규 *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))

제비_신규 = 제비;

이것은 함수이고 이 함수의 맨 처음에 값 = Lot를 Lottes_New 변수에 할당합니다.

항상 원래 상태로 되돌리면 나중에 어떻게 바뀔지 생각해 보세요.

내가 어디에 쓰라고 했지? 시작 함수 이전의 외부 변수에서 ...

로트 값을 올바른 크기로 정규화합니다.

lot_New = NormalizeLot(Lot*2, False, "");




정말 감사합니다!

알려주세요. 이후의 주문 실패에 대해 로트 값을 설정할 수 있습니까? 이런 것이 되려면

1 많은 0.01

2랏 0.01

3랏 0.02

4 로트 o.03

5 랏 0.07

.....

15 로트 1.2

코드에서 로트 값을 변경할 수 있습니다.

그리고 거래가 수익성있는 것으로 판명되면 모든 것이 처음으로 돌아갈 것입니다.

미리 감사드립니다.

보리스.

 
Necron :
로저, 고맙지만 여전히 제대로 작동하지 않습니다. 다른 트레일을 고정하려고했지만 오류가 여전히 남아 있습니다.

네, 원칙적으로는 차이가 없습니다.
내 기능을 사용해 보세요. 매우 간단합니다. 매개변수, 마법 및 원하는 트롤로 전달합니다.
각 틱에서 "통과"하는 한 시작 시 함수 호출을 던지십시오 .

 //+------------------------------------------------------------------+
void trailing( int magic, int trailing){
   int index = 0 ;
   while (trailing > 0 && OrdersTotal () != 0 && OrderSelect (index, SELECT_BY_POS)){
      if (OrderMagicNumber() == magic){
         if (OrderType() == OP_BUY){
            if (Bid - OrderStopLoss() > Point *trailing){
               if (trailing >= MarketInfo( Symbol (), MODE_STOPLEVEL) && trailing > MarketInfo( Symbol (), MODE_FREEZELEVEL))
                  if (!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - ( Point *trailing), OrderTakeProfit(), 0 )) Print ( ">>> ERROR " , GetLastError ());
            }
            return ;
         }
         if (OrderType() == OP_SELL){
            if (OrderStopLoss() - Ask > Point *trailing || OrderStopLoss() == 0 ){
               if (trailing >= MarketInfo( Symbol (), MODE_STOPLEVEL) && trailing > MarketInfo( Symbol (), MODE_FREEZELEVEL))
                  if (!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + ( Point *trailing), OrderTakeProfit(), 0 )) Print ( ">>> ERROR " , GetLastError ());
            }
            return ;
         }
      }
      index++;
   }
}
//+------------------------------------------------------------------+

명령의 마법이 달라야 한다는 것은 분명합니다.

 
작동하지 않는 이유를 알려주세요.

주문 선택(1,SELECT_BY_POS,MODE_TRADES);

오류 코드 4051. 하나의 미결 주문 OP_BUY가 있습니다.
파일:
ma_1.mq4  3 kb
 
itum :

문제 해결을 도와주세요!


내가 열거나 보류한 주문을 검색합니다. 그렇다면 다음으로 이것이 어떤 종류의 매수 또는 매도 주문인지 결정합니다. 특정 조건(하나가 다른 것보다 크고 세 번째보다 작은 경우)에서 이 주문을 닫고 싶습니다. 설정을 변경하고 다시 엽니다.

문제는 주문을 마감하고 개설하기 위한 신호가 지속적으로 존재한다는 것입니다. 따라서 내 주문이 닫혔다가 다시 열리고 등등이 열리고 닫힙니다... )))

이 문제를 해결하는 방법은 무엇입니까? 하아
제 생각에는 데자뷰 ... 하나 가지고 ??? 이미 여러 분이 답변해 주셨는데요... 하하?
포즈 자체를 열고 여는 조건이 포함된 코드를 여기에 입력합니다. 핑거포크붐... :)
 
an11 :
작동하지 않는 이유를 알려주세요.

주문 선택(1,SELECT_BY_POS,MODE_TRADES);

오류 코드 4051. 하나의 미결 주문 OP_BUY가 있습니다.

OrderSelect() 함수의 숫자 개수는 0부터 시작 합니다. 그리고 당신은 1을 가지고 있습니다. 즉, 두 번째 주문을 찾고 있지만 시장에는 하나만 있으므로 작동하지 않습니다.

 
Vinin :
매개변수를 사용하여 이 작업을 수행할 수 있지만 패턴을 사용하면 됩니다. 먼저 기준을 정의해야 합니다. 그렇지 않은 것 같습니다. 그렇다면 어떻게. 최소한 얼마나(백분율). 한 경우에는 시간 구성 요소가, 다른 경우에는 가격입니다. 그것들을 서로 관련시키는 방법. 뉴런을 추가할 수 있지만. 코호넨 레이어는 이를 잘 수행합니다.

수사학적인 질문은 아니었지만 몇 퍼센트로 "닮지 않았는지"가 정말 사실입니다. .. 내 지표 중 하나에서 "그렇게 보이지 않고 몇 퍼센트로")) ) 이미 하나의 패턴에 대한 12개의 변형이 전달되고 패턴은 동일하지만 값은 항상 다르고 비율)),... 나는 아직 신경망으로 작업하지 않았습니다. 여기에서 한 가지 경험이라고 생각합니다. mql로 기본 알고리즘을 작성하는 것만으로는 충분하지 않지만 응용 프로그램을 통해 그는 아마도 모든 것을 고칠 것입니다. 나는 Kohonen을 대체하여 이 작업을 "야만적으로" 처리하고 패턴이 발생한 순간의 모든 매개변수와 거래가 열린 경우 결과를 Excel로 작성한 다음 Excel 분석 방법을 사용하여 관련하여 더 많은 일치 항목을 찾아야 했습니다. 수익성에. 결과적으로 조금 밝혀졌고 시스템이 패턴을 결정했습니다. 일종의 현명하지만 여전히 서투른)
 
cyclik33 : ...

나는 Boris가 어떤 기능을 사용하고 있는지 모르지만 일반적으로 아이디어는 다음과 같습니다. 단계가 고르지 않기 때문에 배열을 사용하고 필요한 볼륨을 작성한 다음 함수에서 해당 값을 정렬하는 것이 좋습니다. .

내 코드의 예:

 //+------------------------------------------------------------------+
double getMartinLot( double lot, double arrayLot[]){ //ФУНКЦИЯ УПРАВЛЕНИЯ ОБъЕМОМ ТОРГОВ ПО СИСТЕМЕ МАРТИНГЕЙЛА
   static double balance_before, balance_after;    //ДЛЯ ХРАНЕНИЯ СОСТОЯНИЯ БАЛАНСА ДО И ПОСЛЕ СДЕЛОК
   static double save_Lot;   
   static int loop;
   if (loop == ArraySize (arrayLot))loop = 0 ;   
   balance_after = AccountBalance();               //СОХРАНЕНИЕ ТЕКУЩЕГО СОСТОЯНИЯ БАЛАНСА   
   if (balance_after >= balance_before){            //ПРОВЕРКА ИЗМЕНЕНИЯ БАЛАНСА
      save_Lot = lot;                              //ЕСЛИ ОН НЕ ИЗМЕНИЛСЯ ИЛИ СТАЛ БОЛЬШЕ, ТО СБРАСЫВАЕМ ЛОТ
      loop = 0;
   } else {
      save_Lot = arrayLot[loop];                   //ЕСЛИ СТАЛ МЕНЬШЕ ТО УВЕЛИЧИВАЕМ ЛОТ
      loop++;
   }
   balance_before = balance_after;                 //СОХРАНЯЕМ СОСТОЯНИЕ БАЛАНСА ПОСЛЕ РАБОТЫ
   return (save_Lot);
}
//+------------------------------------------------------------------+
함수 호출 예:
 //+------------------------------------------------------------------+
int start()
  {
   double volume[] = { 0.1 , 0.1 , 0.2 , 0.3 , 0.7 };   //создаем массив с объемами

   if ( OrdersTotal () == 0 ){
      OrderSend ( Symbol (), OP_BUY, getMartinLot( 0.1 , volume), Ask, 10 , Bid - 25 * Point , Bid + 25 * Point , "" , 777 );
   }
}
//+------------------------------------------------------------------+
 
artmedia70 :
제 생각에는 데자뷰가... 있어요??? 이미 여러 분이 답변해 주셨는데요... 하하?
포즈 자체를 열고 여는 조건이 포함된 코드를 여기에 입력합니다. 핑거포크붐... :)
나도 :))) Valentin은 어떤 이유로 코드를 보여주고 싶지 않고 아마도 그의 아이디어를 공개하고 싶지 않을 것입니다 ...
 
ToLik_SRGV :

나는 Boris가 어떤 기능을 사용하고 있는지 모르지만 일반적으로 아이디어는 다음과 같습니다. 단계가 고르지 않기 때문에 배열을 사용하고 필요한 볼륨을 작성한 다음 함수에서 해당 값을 정렬하는 것이 좋습니다. .

내 코드의 예:

함수 호출 예:

매우 감사합니다!!!!!

나는 또한 당신의 코드를 사용합니다(그리고 그것은 훌륭하게 작동합니다). 그러나 먼저 Artemis 코드에 훨씬 더 많은 문제가 있었고 작동하지 않는 원리에 대한 질문이 이미 있었기 때문에 다른 조언자에게 Artemis 코드를 설치하고 싶었습니다. 그래야 한다.

다시 한 번, 정말 감사합니다!!!! 나는 노력할 것이다!

 

질문은 진부할 수 있고, 고문은 M1에서 거래하고, 주문을 시작하라는 신호를 수신했습니다. 스탑이 짧고 다음 주문에 주문이 마감되었다고 가정합니다. 그러나 개방 조건은 여전히 있습니다.

같은 시간에 주문이 다시 열리지 않도록 하는 가장 좋은 방법은 무엇입니까? 다음 편만 어때? 미리 감사합니다!