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

 
ToLik_SRGV :

근데 이게 맞는거같은데 루스탐도 힌트를 줬어

네, 글을 보낸 후 이미 읽었습니다 :)
 
모두 감사합니다. 계속하세요 :)
 

사람들은 내가 이해하지 못하는 글로벌 변수가 있음을 돕습니다.

 #property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool
b,s, 
bs,
ss,
bt,
st;
double 
bl,sl;  
//+------------------------------------------------------------------+

그들의 데이터에 따르면 주문이 열렸습니다.

 //+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if (bs== 1 &&bl== 1 )
{
    NewOrder1(OP_BUYLIMIT,Lot);

Today=TimeDay( TimeCurrent ())
;}

return ( 0 );}

//+------------------------------------------------------------------+
int NewOrder1( int Cmd, double Lot)
{ double TP= 0 ; //тейкпрофит
double SL= 0 ; //стоплосс
double PR= 0 ; //Цена
double LT= 0 ; //Лот
while (!IsTradeAllowed()) Sleep ( 100 );
if (Cmd==OP_BUYLIMIT)
   {PR=Ask- Point *h;
     if (TakeProfit> 0 ) TP=PR+TakeProfit* Point ;
     if (StopLoss> 0 ) SL=PR-StopLoss* Point ;
     if (Lot> 0 ) LT= 3 *Lot;
        }
int tic= OrderSend ( Symbol (),Cmd,LT,PR, 3 ,SL,TP, 0 ,mag, 0 , CLR_NONE );
if (tic< 0 ) { Print ( GetLastError ());
        } else
        {
b= 0 ;s= 0 ;  
bs= 0 ;
ss= 0 ;
bt= 0 ;
st= 0 ;    
bl= 0 ;sl= 0 ; }
return (tic);}

본질적으로 주문에 0보다 큰 티켓이 할당된 경우 이 기능이 작동해야 합니다.

 else
        {
b= 0 ;s= 0 ; 
bs= 0 ;
ss= 0 ;
bt= 0 ;
st= 0 ;   
bl= 0 ;sl= 0 ; }

전역 변수의 모든 값 을 0으로 변경해야 하며 본질적으로 새 주문을 다시 열지 않아야 합니다.

그리고 그것은 왜 다시 시작 주문으로 돌아가고 각각의 새로운 넥타이에 대해 모든 신규 및 신규 주문을 엽니다.

드 그리고 그 이유를 말하십시오. 현상이 이해되지 않습니까?

예, 시장 주문이 마감될 때 글로벌 변수가 여기에 할당됩니다.

 for ( int cnt=OrdersHistoryTotal();cnt> 0 ;cnt--)
     {
OrderSelect (cnt, SELECT_BY_POS, MODE_HISTORY);
{ if (OrderMagicNumber()== mag &&
OrderSymbol()== Symbol ()) 
{ if (OrderType() == OP_BUY )  {b= 1 ; if (OrderClosePrice()==OrderTakeProfit()) bt= 1 ; 
if (OrderClosePrice()==OrderStopLoss()) bs= 1 ; bl=OrderLots()* 100 ; break ;}
if (OrderType() == OP_SELL)  {s= 1 ; if (OrderClosePrice()==OrderTakeProfit()) st= 1 ; 
if (OrderClosePrice()==OrderStopLoss()) ss= 1 ; sl=OrderLots()* 100 ; break ;}
            }
       
         }
      }

또한 여기에 완전한 전문가가 있습니다.

파일:
test8_2.mq4  7 kb
 
FoxUA :

사람들은 내가 이해하지 못하는 것을 도와줍니다 ...


이러한 변수를 값으로 채우는 블록은 어디에 있습니까?
귀하의 Expert Advisor의 정확한 코드를 귀하가 컴파일하고 테스트한 형태로 한 조각으로 보고 싶습니다.
이 질문은 이미 꽤 오랫동안 매달려 있고 두 번 이상 답변되었지만 이러한 조각으로 인해 아무도 문제의 전체 그림을 실제로 이해할 수 없기 때문에 조각이 아닙니다.

따라서 혼란이 없도록 전체 그림을 전체적으로 보여주십시오.

 
ToLik_SRGV :

이러한 변수를 값으로 채우는 블록은 어디에 있습니까?
귀하의 Expert Advisor의 정확한 코드를 귀하가 컴파일하고 테스트한 형태로 한 조각으로 보고 싶습니다.
이 질문은 이미 꽤 오랫동안 매달려 있고 두 번 이상 답변되었지만 이러한 조각으로 인해 아무도 문제의 전체 그림을 실제로 이해할 수 없기 때문에 조각이 아닙니다.

따라서 혼란이 없도록 전체 그림을 전체적으로 보여주십시오.

여기 어드바이저가 있습니다.

파일:
test8_1.mq4  7 kb
 

그들은 "무료로 고문을 쓸 것입니다"라는 주제의 요청에 항상 응답하지 않습니까?

 
diaspar :

그들은 "무료로 고문을 쓸 것입니다"라는 주제의 요청에 항상 응답하지 않습니까?

반박 질문을 드리겠습니다. 무료로 출근하는 빈도는 얼마나 됩니까?
그것은 그들이 거기에 응답하는 빈도에 관한 것입니다.
 
diaspar :

"무료로 고문을 쓸 것입니다"라는 주제의 요청에 항상 응답하지 않습니까?

토픽 스타터에 의해 토픽이 흐려졌습니다. 그러나 그가 소화할 수 있는 것보다 훨씬 더 많은 소원이 들어왔다. 논리적으로, 그와 요구에서 대답해야 하는 사람은 바로 그 사람입니다. 무엇을 기대했습니까?
 
FoxUA :

그래서 당신은 내 조언자의 오류가 무엇인지 알지 못합니다. 저는 이미 가능한 모든 것을 시도했고 결과는 각 동점에서 1 + 1 대기 중인 주문

동안…

이러한 변수를 값으로 채우는 블록의 버그일 가능성이 가장 높습니다( for 루프에서). 이미 하나의 오류를 찾았 지만(OrderSelect() 에서) 결과는 아직 변경되지 않았으며 어딘가에 잼이 있는 것 같습니다. 이 블록의 논리에서.

추신
일반 문자로 변경하십시오.

 
FoxUA :

Jamb는 분명합니다. 물론 매 틱마다 위치를 엽니다. 역사에서 지는 순서는 아무데도 가지 않기 때문에 매 틱마다 찾아내고 주제의 제어 변수 값을 다음으로 채웁니다. 값이 같으면 거래 시작을 위한 차단이 트리거됩니다.