//В условии прописано что работаем с if ( OrderType () == OP_BUY ){}
//, но метатрейдер почему то игнорирует это условие, и работает только с OP_SELLLIMIT
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos= 1 ;
externint sl= 40 ;
externint tp= 70 ;
datetime time;
datetime time2;
bool trade= false ;
bool trade2= false ;
int a,b;
intOnInit ()
{
//---
MA.Create( Symbol (), PERIOD_CURRENT , 10 , 6 , MODE_EMA , PRICE_CLOSE ); //создал машку//---return ( INIT_SUCCEEDED );
}
voidOnTick ()
{
//---if (IsNewBar()== true ) //если новый бар включаемся
{
if (buy(pos)== true ) //если цена выше МА продолжаем
{
if (!ExistPositions( Symbol (),- 1 ,- 1 , 0 )) //если нету открых ордеров продолжаем
{
if (GetTypeLastClosePos( Symbol (),- 1 )!= OP_BUY ) //если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена //все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО // ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
{
trade= true ;
}
if (trade== true )
{
OpenPosition( Symbol (), OP_BUY , 0.1 , Ask -sl* Point , Ask +tp* Point );
trade= false ;
}
}
}
if (sell(pos)== true )
{
if (!ExistPositions( Symbol (),- 1 ,- 1 , 0 ))
{
if (GetTypeLastClosePos( Symbol (),- 1 )!= OP_SELL )
{
trade2= true ;
}
if (trade2== true )
{
OpenPosition( Symbol (), OP_SELL , 0.1 , Bid +sl* Point , Bid -tp* Point );
trade= false ;
}
}}
}
}
//возвращает истину если закрытие бара с указаной позицией выше МАbool buy( int pos)
{
if ( iClose ( Symbol (), 0 ,pos)>MA.Main( 1 ))
returntrue ;
elsereturnfalse ;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell( int pos)
{
if ( iClose ( Symbol (), 0 ,pos)<MA.Main( 1 ))
returntrue ;
elsereturnfalse ;
}
매매 조건 2가지를 제외한 모든 기능은 김씨 지점에서 가져옴....... 어디서 잘못했는지 알려주세요... 한 교차점에서 하나의 거래가 필요합니다
물론 필요합니다! 글쎄, 이 구성을 최소값 검색에 적용하는 방법은 무엇입니까? 내 머리로는 도저히 이해할 수 없다)
최대값을 검색하기 위해 변수 val에 값 0이 할당됩니다(지표 값보다 확실히 작음).
즉, 최소값을 찾기 위해서는 더 높은 값을 할당해야 합니다. EMPTY_VALUE 상수를 사용하거나 최소값 검색이 수행되는 일부 막대의 표시기 값을 직접 사용할 수 있습니다.
또는 다음과 같이:
물론 필요합니다! 글쎄, 이 구성을 최소값 검색에 적용하는 방법은 무엇입니까? 내 머리로는 도저히 이해할 수 없다)
-1이 나옵니다.예, 배열을 선언하는 방법을 배우고 싶습니다. 다음과 같이 시도했습니다.
루프는 34개의 값을 반복하고 배열에는 33개의 셀만 포함되어 있습니다. 수정하십시오.
그리고 여전히 ArrayMinimum (num_array, WHOLE_ARRAY ,0);
... 예, 배열을 선언하는 방법을 배우고 싶습니다 ...
교육용과 교육용으로만 사용한다면...
최소값과 최대값이 결정되는 기간 - 조정 및 최적화 가능성을 보장하기 위해 외부 매개변수여야 합니다.
따라서 먼저 배열이 크기 없이 선언됩니다.
double val[];배열 선언은 함수가 아닌 일반 섹션에서 이루어집니다.
init 함수에서 배열의 크기가 설정됩니다.
이제 시작 함수에서 배열을 채웁니다.
마지막으로 배열에 ArrayMaximum() 및 ArrayMinimum()을 적용 합니다.
최대값을 검색하기 위해 변수 val에 값 0이 할당됩니다(지표 값보다 확실히 작음).
즉, 최소값을 찾기 위해서는 더 높은 값을 할당해야 합니다. EMPTY_VALUE 상수를 사용하거나 최소값 검색이 수행되는 일부 막대의 표시기 값을 직접 사용할 수 있습니다.
또는 다음과 같이:
루프는 34개의 값을 반복하고 배열에는 33개의 셀만 포함되어 있습니다. 수정하십시오.
그리고 여전히 ArrayMinimum (num_array, WHOLE_ARRAY ,0);
친애하는 동료 프로그래머! 곤란합니다 도와주세요
나는 이미 이 코드에 대해 내 머리를 깨뜨렸다.
전체 기능은 다음과 같습니다.
그것은 인쇄에 오고 이것이 생산하는 것입니다:
반면 티켓: 225299700은 OP_SELLLIMIT 주문 티켓입니다.
그리고 예상대로 모든 것이 이 선택된 주문의 손절매를 수정합니다. 그리고 OP_BUY는 포인트 블랭크를 보지 않습니다. 물론 다음과 같습니다.
무엇이 문제가 될 수 있습니까? 그가 나에게 왜 이러는 거지? 내가 그것을 알아낼 수 있도록 도와주세요!
기능에 대한 또 다른 질문
예를 들어 지정된 가격으로 앞으로 5개의 막대를 앞으로 그리고 다시 그리지 않고 직사각형을 그리는 방법
나는 보았다. 고맙습니다.
그러나 질문에 대한 정보가 거의 없습니다. 한 달에 시간당 막대에 많은 극값이 있습니다. 그리고 그건 그렇고, 정확히 무엇의 극단입니까?