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

 
_SS_ :
미결 주문 유형을 결정하는 방법은 무엇입니까?

주문 유형()

하지만 실제로는 교과서부터 시작해야 하고... :) 아니면 메타에디터에서 최소한 F1을 사용하거나

정수 주문 유형 ( )
현재 선택한 주문의 작업 유형을 반환합니다. 다음 값 중 하나일 수 있습니다.
OP_BUY - 매수 포지션,
OP_SELL - 포지션 매도,
OP_BUYLIMIT - 지정된 수준에 도달하면 구매 보류 중인 주문, 현재 가격이 수준 이상인 경우
OP_BUYSTOP - 지정된 수준에 도달하면 구매 대기 중인 주문, 현재 가격이 수준보다 낮음,
OP_SELLLIMIT - 지정된 수준에 도달하면 보류 중인 판매 주문, 현재 가격이 수준보다 낮음,
OP_SELLSTOP - 지정된 수준에 도달했을 때 판매 대기 중인 주문, 현재 가격이 수준 이상입니다.
OrderSelect() 함수를 사용하여 주문을 미리 선택해야 합니다.
예시:
 정수 주문 유형;
  if(주문 선택(12, SELECT_BY_POS)==true)
    {
     order_type=주문 유형();
     // ...
    }
  또 다른
    Print("OrderSelect()가 오류를 반환했습니다 - ",GetLastError());
 
gheka :

더블 NormalizeDouble ( 이중 값, 정수 숫자)

- 부동 소수점 값. --- 방법 것입니다?
숫자 - 소수점 이하 자릿수(0-8)의 정밀도 형식입니다. --- 1.29800처럼 5글자가 나오죠?

부동 소수점 값은 double 유형의 실수입니다.

그리고 숫자 대신 int 유형의 변수를 사용하십시오.

예를 들어 int dg= MarketInfo ( Symbol () , MODE_DIGITS);

 
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;

static int KolBars;



if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)


{

KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия

}




// Торговые критерии

// Критерий откр. Buy


Opn_B=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}

}




도와주세요 3회째 부탁드립니다. 새 양초가 나타날 때 매수 위치를 열고(이전 2개의 양초가 녹색인 경우), 해당 위치가 열린 양초가 닫힐 때 또는 다음 양초가 닫힐 때 위치를 닫는 기본 고문.

위에서 볼 수 있는 것은 새 양초가 나타날 때마다 시작 기준에 반응하지 않고 포지션을 엽니다. 저는 포지션을 닫는 방법을 알지 못했습니다. 교과서나 포럼에서 찾지 못했습니다.

 
artmedia70 :

부동 소수점 값은 double 유형의 실수입니다.

그리고 숫자 대신 int 유형의 변수를 사용하십시오.

예를 들어 int dg= MarketInfo ( Symbol () , MODE_DIGITS);


그들은 나에게 이렇게 썼습니다. "정규화(NormalizeDouble()), 최대/최소 로트에 대한 제한이 5자리인 경우 확인하십시오. 정지 및 이익을 10배 늘리십시오."


문서에는 "부동 소수점 숫자를 지정된 정확도로 반올림합니다. StopLoss, TakeProfit의 계산된 값 및 보류 중인 주문의 시작 가격 값은 정확도로 정규화되어야 합니다. 사전 정의된 변수 Digits 에 저장됩니다."

교과서에서 못찾았 는데 NormalizeDouble을 통해 현 가격, StopLoss, TakeProfit을 정상화 해야 하는 건가요 ---? 그렇다면 정확히 어떻게?

더블 NormalizeDouble ( 이중 값, 정수 숫자)

이중 값 -- 대신 예를 들어 상금을 넣을 수 있습니다.

int 숫자 -- 여기에서 dg 변수는 MarketInfo ( Symbol () , MODE_DIGITS)와 같습니다. ???

 
gheka :


그들은 저에게 이렇게 썼습니다. "정상화(NormalizeDouble()), 최대/최소 로트에 대한 제한을 확인하십시오. 5개 표시이면 정지 및 이익을 10배로 늘리십시오."


문서에는 "부동 소수점 숫자를 지정된 정확도로 반올림합니다. StopLoss, TakeProfit의 계산된 값 및 보류 중인 주문의 시작 가격 값은 정확도로 정규화되어야 합니다. 사전 정의된 변수 Digits 에 저장됩니다."

교과서에서 못찾았 는데 NormalizeDouble을 통해 현 가격, StopLoss, TakeProfit을 정상화 해야 하는 건가요 ---? 그렇다면 정확히 어떻게?

더블 NormalizeDouble ( 이중 값, 정수 숫자)

이중 값 -- 대신 예를 들어 상금을 넣을 수 있습니다.

int 숫자 -- 여기서 MarketInfo ( Symbol () , MODE_DIGITS) 와 같은 변수 dg; ???

정수 손절매 = 50; // StopLoss(포인트)

정수 TakeProfit=150; // TakeProfit(포인트)

정수 SetOrderDistance=50; // 포인트로 보류 주문을 하기 위한 거리

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

int pt=MarketInfo(Symbol(), MODE_POINT); // 견적 통화의 포인트 크기

int dg=MarketInfo(Symbol(),MODE_DIGITS); // 상품 가격의 소수점 이하 자릿수

int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL); // 최소 허용 손절매/포인트 단위 이익 수준

이중 pa=MarketInfo(Symbol(), MODE_ASK); // 가격 물어보기

이중 pb=MarketInfo(Symbol(), MODE_BID); // 입찰 가격

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

더블 slB=NormalizeDouble(pa-StopLoss*pt, dg); // 매수 포지션에 대한 StopLoss 가격 수준의 정규화

이중 tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // 매수 포지션에 대한 TakeProfit 가격 수준의 정규화

더블 slS=NormalizeDouble(pb+StopLoss*pt, dg); // Sell 포지션에 대한 StopLoss 가격 수준의 정규화

이중 tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Sell 포지션에 대한 TakeProfit 가격 수준의 정규화

더블 SetB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // 보류 중인 구매 주문을 하는 가격의 정규화

이중 SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // 보류 중인 판매 주문 가격의 정규화

이중 slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // 보류 중인 매수 주문의 StopLoss 가격 수준 정규화

이중 tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // 보류 중인 구매 주문의 TakeProfit 가격 수준 정규화

더블 slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // 보류 중인 판매 주문의 StopLoss 가격 수준 정규화

이중 tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // 보류 중인 판매 주문의 TakeProfit 가격 수준 정규화

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------

이해하다... :)

그리고 StopLevel의 존재를 잊지 마십시오. - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

이 값보다 작지 않도록 정류장 및 테이크를 배치하기 위한 최소 거리를 확인합니다.

 
artmedia70 :

정수 손절매 = 50; // StopLoss(포인트)

정수 TakeProfit=150; // TakeProfit(포인트)

정수 SetOrderDistance=50; // 포인트로 보류 주문을 하기 위한 거리

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

int pt=MarketInfo(Symbol(), MODE_POINT); // 견적 통화의 포인트 크기

int dg=MarketInfo(Symbol(),MODE_DIGITS); // 상품 가격의 소수점 이하 자릿수

int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL); // 최소 허용 손절매/포인트 단위 이익 수준

이중 pa=MarketInfo(Symbol(), MODE_ASK); // 가격 물어보기

이중 pb=MarketInfo(Symbol(), MODE_BID); // 입찰 가격

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------

더블 slB=NormalizeDouble(pa-StopLoss*pt, dg); // 매수 포지션에 대한 StopLoss 가격 수준의 정규화

이중 tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // 매수 포지션에 대한 TakeProfit 가격 수준의 정규화

더블 slS=NormalizeDouble(pb+StopLoss*pt, dg); // Sell 포지션에 대한 StopLoss 가격 수준의 정규화

이중 tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // Sell 포지션에 대한 TakeProfit 가격 수준의 정규화

더블 SetB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // 보류 중인 구매 주문을 하는 가격의 정규화

이중 SetS=NormalizeDouble(pb-SetOrderDistance*pt, dg); // 보류 중인 판매 주문 가격의 정규화

이중 slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // 보류 중인 매수 주문의 StopLoss 가격 수준 정규화

이중 tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // 보류 중인 구매 주문의 TakeProfit 가격 수준 정규화

더블 slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // 보류 중인 판매 주문의 StopLoss 가격 수준 정규화

이중 tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // 보류 중인 판매 주문의 TakeProfit 가격 수준 정규화

-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------

이해하다... :)

그리고 StopLevel의 존재를 잊지 마십시오. - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);

스톱과 테이크를 배치하기 위한 최소 거리를 확인하여 이 값보다 작지 않도록 합니다.


정말 감사합니다!!! 이건 내가 정리할게! )
 
함수를 만들고 호출하는 방법은 무엇입니까?
 

변경된 윈도우. 경고 창이 뜨지 않습니다. 소리 알림이 있고 로그 항목이 있지만 플로팅 창이 팝업되지 않습니다.

터미널을 청소하고 모든 것을 다시 컴파일했습니다. 이유는 무엇입니까?

 
_SS_ :
함수를 만들고 호출하는 방법은 무엇입니까?
다시 한 번 반복 합니다 - 교과서를 읽고 재료를 연구하십시오 ... :)
 
artmedia70 :
다시 한 번 반복 합니다 - 교과서를 읽고 재료를 연구하십시오 ... :)
시도했지만 작동하지 않습니다!