[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 300

 

Five와 함께하는 소년들은 친절하다. 봐주세요, 제 인디카가 챔피언에 올랐습니다. 스턱 - 결정할 수 없습니다...

4에서 5로 번역 - 포럼에 - 침묵. 이 페이지 의 지점에 코드를 게시했습니다. 설명 - 이전에.

덕분에.

 
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {                     // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
 
okvseok:

bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
 datetime t;
 double ocp, otp;
 int dg, i, j=-1, k=OrdersHistoryTotal();

 if (sy=="0") sy=Symbol();
 for (i=0; i<k; i++) {
 if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
 if (OrderSymbol()==sy || sy=="") {
 if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
 if (op<0 || OrderType()==op) {
 if (mn<0 || OrderMagicNumber()==mn) {
 if (t<OrderCloseTime()) {
 t=OrderCloseTime();
 j=i;
 }
 }
 }
 }
 }
 }
 }
 // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
 if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Если очередной ордер истории торгов выбран, то
 dg=MarketInfo(sy, MODE_DIGITS);// переменная dg принимет значение дигитса по валютной паре, имя которой лежит в переменной sy
 // далее я возможно не верно расставил приоритет скобок, но по сути должно быть так:
 if (dg==0){// если дигитс равен нулю, то
 if(StringFind(OrderSymbol(),"JPY")<0){// если в имени инструмента ордера найдена подстрока то (только это не правильно написано - функция может верноуть значение > 1)
 dg=4;// дигитс принимает значение = 4
 }
 else{// иначе
 dg=2;// дигитс принимает значение = 2
 }
 }
 ocp=NormalizeDouble(OrderClosePrice(), dg);// нормализация цены закрытия ордера
 otp=NormalizeDouble(OrderTakeProfit(), dg);// нормализация цены ТейкПрофита ордера
 if (ocp==otp) return(True);
 }
 return(False);// команда вернуть из подпрограммы значение "ложь"
 }
 
drknn :

부울 isCloseLastPosByTake(문자열 sy="", int op=-1, int mn=-1) {
날짜 시간 t;
이중 ocp, otp;
정수 dg, i, j=-1, k=OrdersHistoryTotal();

if (sy=="0") sy=Symbol();
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=주문닫기시간();
j=나;
}
}
}
}
}
}
}
//!!!!!!!!!!!!!!!!!!!!!! 여기에서 시작되는 코드 행의 의미를 설명할 수 있는 사람이 있습니까?
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// 거래 내역의 다음 주문이 선택되면
dg=MarketInfo(sy, MODE_DIGITS);// dg 변수는 이름이 sy 변수에 있는 통화 쌍의 숫자 값을 취합니다.
// 다음으로 대괄호의 우선 순위를 올바르게 지정하지 않을 수 있지만 실제로는 다음과 같아야 합니다.
if (dg==0){// 숫자가 0이면
if(StringFind(OrderSymbol(),"JPY")<0){// 주문 상품의 이름에 하위 문자열이 있는 경우(이 경우에만 올바르게 작성되지 않음 - 함수는 1보다 큰 값을 반환할 수 있음)
dg=4;// 숫자는 값을 취합니다 = 4
}
기타{// 기타
dg=2;// 숫자는 값을 취합니다 = 2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);// 주문 마감 가격의 정규화
otp=NormalizeDouble(OrderTakeProfit(), dg);// 주문 TakeProfit 가격의 정규화
if (ocp==otp) return(True);
}
return(False);// 서브루틴에서 "false" 값을 반환하는 명령
}
고마워, 숫자가 무엇입니까?
 
okvseok :
고마워, 숫자가 무엇입니까?

거래 수단의 중요성 - 소수점 뒤에 몇 개의 숫자가 있는지.
 
drknn :

거래 수단의 중요성 - 소수점 뒤에 몇 개의 숫자가 있는지.

즉, 4자리가 있다는 것을 알고 있으면 코드를 다음과 같이 줄일 수 있습니까?

정수 dg = 4;

............코드

if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {

ocp=NormalizeDouble(OrderClosePrice(), dg);// 주문 마감 가격 의 정규화
otp=NormalizeDouble(OrderTakeProfit(), dg);// 주문 TakeProfit 가격의 정규화
if (ocp==otp) return(True);
}

반환(거짓);

}

 
가능한지 모르겠습니다. 작성자의 의도에 따라(글쎄요, 그렇게 봅니다) 코드의 이 섹션은 자릿수를 자동으로 결정하도록 설계되었습니다. 따라서 코드에서 소수점 이하 자릿수를 정확히 결정할 수 있습니다. 가격을 반올림할 필요가 있다는 점입니다. 이 섹션 만 어리석게 수행됩니다.
 
알려주세요, 거래 프로세스에 관련된 모든 쌍에 대한 총 미결 주문 수를 계산하는 지표가 있습니까?
 
yosuf :
말해 주세요. 거래 프로세스에 관련된 모든 쌍에 대한 총 미결 주문 수를 계산하는 지표가 있습니까?
아니요. 오픈 포지션 의 수를 세는 간단한 어드바이저를 만드는 것이 더 쉽습니다.
 
CodeBase 책임자에게 질문합니다. 나는 거기에 3개의 출판물을 보냈습니다(영어로 된 3개 더하기). 그 중 하나는 7월 18일에 보내졌고 출판되지 않았습니다. 처음에 거기에 코드를 보냈을 때 3-4일 안에 코드가 나타났습니다. 이제 새로운 것이 출판될 것인지 아닌지는 분명하지 않습니다. 예를 들어 자료가 다소 약하고 상사의 의견에 따라 CodeBase에 넣을 가치가 없는지 알고 싶습니다. 그런 다음 나타나지 않을 것이라는 일종의 메시지를 받게 될까요? , 응용 프로그램에서 제거됩니까? 그들이 출판되지 않을 것이라는 것을 알았다면 나는 출판물을 다르게, 더 광범위하게 준비했을 것입니다. 출판을 위한 평균 대기 시간이 있습니까?