예를 들어 문자열
bool neutral = OrderClosePrice() == OrderOpenPrice();
아마도 다음과 같이 알고리즘 조건의 작업을 구성하는 것이 필요합니다.
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
글쎄, 같은 정신의 다른 두 조건
그건 그렇고, 역사상 마지막 거래가 항상 마지막 거래는 아닙니다.
예를 들어 문자열
아마도 다음과 같이 알고리즘 조건의 작업을 구성하는 것이 필요합니다.
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
글쎄, 같은 정신의 다른 두 조건
그러나 물론 여전히 확인하고 다시 작성합니다. 결과를 알려드리겠습니다.
예, 시간 샘플링을 제거했지만 아직 작동하지 않습니다. 이전에 다른 시스템에서 이 블록을 사용했는데 이 부분에서 완벽하게 작동했습니다.
그러나 물론 여전히 확인하고 다시 작성합니다. 결과를 알려드리겠습니다.
이 변수가 어딘가에 0으로 설정되어 있습니까?
ObchMin = ObchMin + SumPosOrder; // Подсчет общего минуса Minus++; //Подсчет отрицательных сделок Sdelok++; //Подсчет количества сделок
어쩌면 다른 방향으로 갈 수도 있습니다.
지금은 이 함수에서 통계 모음을 제거하고 다른 함수에서 일반 빼기 및 통계를 제거합니다(별도의 함수를 생성하겠습니다).
나는 블록으로 씁니다.
통계 수집 및 빼기 및 더하기(빼기 및 더하기 전역 변수)를 계산하기 위한 블록
if ( OrderSelect ((OrdersHistoryTotal() - 1 ), SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol ) { if (OrderTicket() != Tiket2) { bool profit1 = false ; if (OrderClosePrice() > 0 ) { profit1 = true ; } bool loss1 = false ; if (OrderClosePrice() < 0 ) { loss1 = true ; } SumPosOrder = OrderLots(); Tiket2 = OrderTicket(); Print (OrderCloseTime()); if (loss1) { ObchMin = ObchMin + SumPosOrder; Minus++; Sdelok++; } if (profit1) { ObchPlus = ObchPlus + (SumPosOrder * 0.8 ); } if (profit1 && ObchPlus < ObchMin) { Pobeda++; Sdelok++; } if (profit1 && ObchPlus > ObchMin) { ObchPlus = 0 ; ObchMin = 0 ; Pobeda++; Sdelok++; } }
비율 계산(보다 정확하게는 샘플링)을 위한 변수 n의 블록 2 선택
int GetN() { int n = 0 ; for ( int i = OrdersHistoryTotal() - 1 ; i >= 0 ; i--) { if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol ) { bool profit = false ; if (OrderClosePrice() > 0 ) profit = true ; bool loss = false ; if (OrderClosePrice() < 0 ) loss = true ; } if (loss) { n++; } if (n >= MartinSteps) { n = 0 ; break ; } if (profit && ObchPlus < ObchMin) { n++; } if (profit && ObchPlus > ObchMin) { n = 0 ; break ; } } Print (n); return n; } double SelectVolume( int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; } //+------------------------------------------------------------------+
아마 맞을거에요...
논리를 이해할 때까지
어떻게 그렇게?
bool profit = false ; if (OrderClosePrice() > 0 ) profit = true ; bool loss = false ; if (OrderClosePrice() < 0 ) loss = true ;
주문 의 종가가 어떻게 0보다 작을 수 있습니까?
BUY 주문은 종가가 시가보다 높으면 긍정적인 영역이 됩니다.
다음은 구매에 대한 플러스 조건입니다(커미션 및 스왑 제외):
OrderClosePrice() > OrderOpenPrice()반대의 경우에는 음수입니다.
BUY 주문은 종가가 시가보다 높으면 양의 영역에 있습니다.
구매에 대한 플러스 조건은 다음과 같습니다(커미션 및 스왑 제외).
반대의 경우에는 음수입니다.이진 옵션을 작성했기 때문에 조금 다르게 했습니다.
if (OrderProfit() > 0 )
그럼 아마 맞겠죠?
어쩌면 다른 방향으로 갈 수도 있습니다.
지금은 이 함수에서 통계 모음을 제거하고 다른 함수에서 일반 빼기 및 통계를 제거합니다(별도의 함수를 생성하겠습니다).
나는 블록으로 씁니다.
통계 수집 및 빼기 및 더하기(빼기 및 더하기 전역 변수)를 계산하기 위한 블록
비율 계산(보다 정확하게는 샘플링)을 위한 변수 n의 블록 2 선택
아마 맞을거에요...
알고리즘 전반에 걸쳐 당신은 이미 조언을 받았고, 나는 끼어들고 싶지도 않고 당신의 코드와 같은 조언도 보지 않았습니다 ... 그리고 이것은
double SelectVolume( int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; }
내 눈을 사로 잡았다. 이와 관련하여 질문은 다음과 같습니다. switch 문을 적용하는 것이 더 쉽고 읽기 쉽지 않습니까?
double SelectVolume( int n) { double Volume = 0.0 ; switch (n) { case 1 : Volume = Volume2; break ; case 2 : Volume = Volume3; break ; case 3 : Volume = Volume4; break ; case 4 : Volume = Volume5; break ; case 5 : Volume = Volume6; break ; case 6 : Volume = Volume7; break ; case 7 : Volume = Volume8; break ; case 8 : Volume = Volume9; break ; case 9 : Volume = Volume10; break ; default : Volume = Volume1; break ; } return (Volume); }더 읽기 쉽고 이해하기 쉬울 것 같아요. 어쩌면 조금 더 빨리 작동합니다.
알고리즘 전반에 걸쳐 당신은 이미 조언을 받았고, 나는 끼어들고 싶지도 않고 당신의 코드와 같은 조언도 보지 않았습니다 ... 그리고 이것은
내 눈을 사로 잡았다. 이와 관련하여 질문은 다음과 같습니다. switch 문을 적용하는 것이 더 쉽고 읽기 쉽지 않습니까?
더 읽기 쉽고 이해하기 쉬울 것 같아요. 어쩌면 조금 더 빨리 작동합니다.처음에는 찾던 대로 했더니 효과가 있어서 개선할 생각은 하지 않았습니다.
당신은 그들이 말하는 것을 알고 있습니다 - 그것은 작동합니다 - 만지지 마십시오.
그러나 이제 나는 확실히 이 방법을 적용하려고 노력할 것입니다. 배우고 성장해야 하기 때문입니다.
지금은 변수 n을 다룰 것입니다. 그녀는 고려되기를 원하지 않습니다.
항상 n = 0(지금은)
나는 코드를 작성
작업은 원래 다음과 같습니다.
마지막으로 마감된 주문을 찾습니다.
플러스 또는 마이너스로 닫혀 있는지 확인하십시오.
거래 수 계산
플러스와 마이너스의 수를 세십시오.
베팅 금액을 계산합니다.
거래가 양수이면(그리고 총 빼기 = 0) 베팅 #1
거래가 음수이면 마이너스를 고려하고 2번을 입찰합니다.
플러스이지만 마이너스 > 0이면 다음 베팅입니다.
그런데 어떤 이유로 내기 횟수와 내기 금액을 올바르게 계산하지 않습니다 ...