2D 배열 요소 할당 문제
결과 1 - 3 / 3

실: 2D 배열 요소 할당 문제

  1. #1
    첨부는 거래 전략을 조사하기 위해 노력한 Expert Advisor의 일원이지만 배열을 다룰 때 MQL4의 한계에 다소 어려움을 겪고 있습니다. 내가 원하는 것은 배열을 사용하여 내가 열어 놓은 상황에 관한 정보를 저장하고 요소의 값을 다시 정의하는 것입니다. 내가 구현하고자하는 것은 미결 주문 모음을 재구성하는 일련의 3 가지 기능입니다. 이것은 닫히거나 모든 위치가 열린 후에 할 수 있습니다. 다음 기능은 각각의 개시 가격에 따라 미결 주문을 분류하기로되어 있습니다. 순차적 기능은 정지 손실을 재평가하고 이익 가치를 취하는 것입니다. 손해를 방지하고 이익 가치를 창출하는 가치는 주문의 도입 가격에 근거해야합니다. 스톱 로스를 수행하고 이익을 얻으려는 EA를 원했습니다. 이런 방식으로 EA를 구축 할 때 위험을 감수하고 그렇게함으로써 위험을 미리 알고 있습니다.





    더블 OrderStack [7] [9];/주문 정보 배열


    if ((OrderStack [TotalOrders 1] [1] lt; Bid) (TotalOrders lt; 2))/새 판매 위치를 더 유리한 가격으로 엽니 다.
    //삼
    TicketNum = OrderSend (Symbol (), OP_SELL, LotSize2, Bid, 3,0,0, CommentString, 0,0, Red);/이 주문을 엽니 다.
    If (TicketNumlt; 0)
    //4
    인쇄 (오류 거래 : Error Code =, GetLastError () ,, Lotsize :, Lots);
    //삼
    그밖에
    //4
    if (OrderSelect (TicketNum, SELECT_BY_TICKET)))
    //5
    인쇄 (주문 판매 가격 :, OrderOpenPrice ());
    OrderFlagS = 1;/주 EA 함수에서 발언에 사용됨
    단말기();/미결 주문 데이터 배열을 생성하는 함수를 호출합니다.
    //4
    //삼
    //2
    } /1
    }/0

    //------------------------------------------------ --------------------
    //Terminal.mqh
    //------------------------------------------------ ------------------------------ 1 --
    //주문 회계 기능
    //전역 변수 :
    //OrderStack [7] [9]
    //가장 최근에 알려진 주문 배열
    //첫 번째 색인 = 주문 번호
    //[] [0] 정의되지 않았습니다.
    //[] [1] 주문 공개 가격 (절대 가격 값)
    //[] [2]이 주문의 StopLoss (위) 가격 값)
    //[] [3]이 주문 (위)의 TakeProfit 가격 값)
    //[] [4] 주문 번호
    //[] [5] 로트 주문량 (절대 가격 값)
    0 = B, 1 = S, 2 = BL, 3 = SL, 4 = BS, 5 = SS
    //[] [7] 주문 매직 번호
    //[] [8] 0/1 비평 접근성
    //Mas_Tip [6]
    //모든 정렬 순서의 배열
    //주문 양식 : 0 = B, 1 = S, 2 = BL, 3 = SL, 4 = BS, 5 = SS
    //------------------------------------------------ ------------------------------ 2 -
    더블 데크()
    //1
    int Mas_Tip [6];
    int Qnt = 0;
    int 나;

    //주문 카운터
    //------------------------------------------------ ------------------------------ 삼 --

    ArrayInitialize (OrderStack, 0.0);/선택 영역을 제로화합니다.
    ArrayInitialize (Mas_Tip, 0);/배열을 0으로 만든다.
    //------------------------------------------------ ------------------------------ 4 -
    for (I = 0; I lt; OrdersTotal (); I )/시장 및 미정 주문의 경우
    //2
    if ((OrderSelect (I, SELECT_BY_POS) == true) (OrderSymbol () == Symbol ()))
    //다음에 하나가있을 때. . 그리고 우리의 통화 쌍
    //삼
    //------------------------------------------------ --------------------- 5 -
    Qnt ;/주문 금액
    OrderStack [Qnt] [1] = OrderOpenPrice ();/오픈 가격 주문
    OrderStack [Qnt] [2] = OrderStopLoss ();/SL 가격
    OrderStack [Qnt] [3] = OrderTakeProfit ();/TP 가격
    OrderStack [Qnt] [4] = OrderTicket ();/주문 번호
    OrderStack [Qnt] [5] = OrderLots ();/많은 금액
    Mas_Tip [OrderType ()] ;/유형의 주문 수량
    OrderStack [Qnt] [6] = OrderType ();/주문 유형
    OrderStack [Qnt] [7] = OrderMagicNumber ();/매직 넘버
    if (OrderComment () ==)
    //4
    OrderStack [Qnt] [8] = 0;/전혀 주석이 없다면
    //삼
    그밖에
    //4
    OrderStack [Qnt] [8] = 1;/주석이있는 경우
    //삼
    //2
    //------------------------------------------------ --------------------- 6 -

    OrderStack [0] [0] = Qnt;/주문 금액

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

    FillStack (OrderStack, Trend_Up);/트렌드 방향과 초기 거래 가격을 기반으로 열린 거래 데이터를 정렬하는 함수 호출
    return (0);
    //1

    //0
    //------------------------------------------------ ------------------------------ 8 -




    //
    //기존 주문 정렬 함수
    //

    double SortStack (double OrderStack [7] [9], bool Trend_Up)/재구성 된 배열을 정렬하는 함수
    //초기 주문 오픈 가격에 기초한 주문
    //1
    int I, TotalOrders;
    TotalOrders = OrderStack [0] [0];

    if (Trend_Up == true)
    //2
    ArraySort (OrderStack [TotalOrders] [1], TotalOrders, 1, MODE_DECEND);
    //1
    if (Trend_Up == false)
    //2
    ArraySort (OrderStack [TotalOrders] [1], TotalOrders, 1, MODE_ASCEND);
    //1
    FillStack (OrderStack, Trend_Up);/불리한 거래 매개 변수를 정의하는 함수를 호출합니다.
    //주문 배열로 시장 거래
    return (0);
    //0

    //
    //불리한 시장 거래 매개 변수 기능 기록
    //

    double FillStack (OrderStack [7] [9], bool Trend_Up)/불리한 시장 거래 매개 변수 정의
    //Bollinger 밴드 피어싱의 초기 주문을 기반으로합니다.

    //1

    두 배 가격;

    PriceIn = OrderStack [1] [1];
    //2
    if (Trend_Up == true)
    //삼
    OrderStack [1] [2] = 가격 하락 - StopLossVal;/열 2, 중지 손실 항목 열
    OrderStack [1] [3] = 가격 인하 0.0030;/Column 3, Profit Entry Column 가져 오기
    OrderStack [2] [1] = PriceIn - 0.0010;/Column 1, Market Order Buy Price의 평균 하락
    OrderStack [2] [3] = 가격 - 0.0005;/Column 3, 평균 시장 진입에 대한 수익 가져 오기
    //2
    if (Trend_Up == false)
    //삼
    OrderStack [1] [2] = 가격 In StopLossVal;/열 2, 중지 손실 항목 열
    OrderStack [1] [3] = 가격 있음 - 0.0030;/Column 3, Profit Entry Column 가져 오기
    OrderStack [2] [1] = PriceIn 0.0010;/Column 1, Market Order Buy Price의 평균 하락
    OrderStack [2] [3] = 가격은 0.0005;/Column 3, 평균 시장 진입에 대한 수익 가져 오기
    //2
    //1
    return (0);
    //0




    이 EA를 구현할 때 발생하는 문제는 컴파일러가 내 FillStack () 함수의 코드에 대해 ”배열 항목을 할당 할 수 없다”라는 오류 메시지를 표시한다는 것입니다. 난처한 점은 FillStack () 함수 위의 Terminal () 함수로 수행되는 작업과 똑같은 것입니다. 경험이있는 프로그래머 중 한 명이이 버그에 대한 치료법을 줄 수 있기를 희망합니다.
    CQL과 같은 배열 요소에 값을 할당하는 기능이 MQL4에도 존재하지 않는다는 점을 MQL4가 가진 모든 유사성과 함께 믿기 어렵습니다. 고맙습니다.

  2. #2
    이 오류는 읽기 전용 배열에 쓰기를 나타냅니다. 이 게시물은 오래 되었기 때문에 귀하가 후속 조치를 게시하지 않았고 해결책을 발견했거나 대체 솔루션을 찾았다 고 가정합니다. 삽입 된 코드 dual OrderStack # 91; 7 # 93; # 91; 9 # 93; void 함수 (이중 배열 # 91; # 93; # 91; # 93; -RRB- 경고 (범위 크기, ArraySize (범위)), 범위 # 91, 0 # 93, # 91, 0 # 93; = EURUSD;오류 쓰기를 허용하지 않습니다. 서브에 전달 된 배열을 읽고 쓰는 키는 문에 있습니다. 코드 블록은 실수로 건너 뛰지 않습니다. 삽입 된 코드 double OrderStack # 91; 7 # 93; # 91; 9 # 93; void # 93; # 91; # 93; # 93; # 93; # 93; # 93; # 93; # 93; # 93; # 93; # 93; # 91; 0 # 93; # 91; 0 # # 93; # 91; # 93; #

  3. #3

    Quote 원래에 의해 게시 됨 ;
    OrderStack [0] [0] = Qnt;/주문 수 TotalOrders = OrderStack [0] [0];
    안녕하세요. 인용문에서 밝혀진 바와 같이 1 개의 정수로 표시 할 수있는 조언을 위해 9 개의 2 중 복식을위한 영역을 예약한다는 메모는 거리 관리가 잘못되었습니다. MetaEditor 도움말 파일 (Navigator)에서 다양한 기능을 연구하고 알아보고 항상 코드컴퓨터가 실행되는 하단에 떠있는 정보가 많아지는 것을 명심하십시오.

게시 권한

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
쿠키 정책
쿠키 정책: koreaforex 웹사이트는 쿠키를 사용하며, 웹사이트를 사용자는 쿠키 사용에 동의하는 것입니다. 자세한 정보는 '쿠키 공개' 를 읽어주십시오.