KimIV의 유용한 기능 - 페이지 71

 
위쪽 및 아래쪽 도형 을 별도로 번호를 매길 필요가 있습니다. 함수 매개변수에서 UPPER 또는 LOWER 유형과 프랙탈 수를 지정해야 합니다. 그건 그렇고, 지그재그 변곡점을 찾을 때 상하 변곡점을 따로따로 번호를 붙였다면 사용하기 더 편했을 것이다.
 
KimIV писал(а) >>

예, 아니요... 이 도형에 번호를 매기는 방법을 알 수 없었기 때문입니다.

그리고 이것이 프랙탈의 형성으로 간주되지 않는다면 어떨까요? 옵션?

 
컴뱃. 이 옵션에 동의하지 않습니다. 사실은 하나의 막대에 두 개의 프랙탈이 있을 때 "다이아몬드"라고도 하는 잘 알려진 "렌즈" 패턴의 표시입니다. 따라서 이 수치는 이를 바탕으로 Expert Advisor에서 포착될 수 있다.
 
부두 및 Igor에 대한 질문 = 시간과 별도의 창에서 시간(많은 다른 T \ F)의 연속선 형태로 표시기 "이익" 또는 "자본"을 구축하는 것이 가능합니까(의미 - 포트폴리오 제어 역학에서) ... sozh. Igor의 웹 사이트에 표시기가 있지만 테이블 형태이며 정적입니다 ... (또는 하나가있을 수 있습니다 - 링크를 제공하십시오) ....
 
khorosh писал(а) >>
컴뱃. 이 옵션에 동의하지 않습니다. 사실은 하나의 막대에 두 개의 프랙탈이 있을 때 "다이아몬드"라고도 하는 잘 알려진 "렌즈" 패턴의 표시입니다. 따라서 이 수치는 이를 바탕으로 Expert Advisor에서 포착될 수 있다.

예를 결정하지만 번호 매기기를 위해 그리고 실제로 연설이 적합하지 않은 이유는 ...

 
nuj >> :
부두 및 Igor에 대한 질문 = 시간과 별도의 창에서 시간(많은 다른 T \ F)의 연속선 형태로 표시기 "이익" 또는 "자본"을 구축하는 것이 가능합니까(의미 - 포트폴리오 제어 역학에서) ... sozh. Igor의 웹 사이트에 표시기가 있지만 테이블 형태이며 정적입니다 ... (또는 하나가있을 수 있습니다 - 링크를 제공하십시오) ....

포럼 검색 사용

파일:
equity_v7.mq4  17 kb
 

다음과 같은 조언자가 있을 수 있습니다.

1. 열려있는 모든 위치를 선택합니다.

2. 손실 없이 중지합니다.

3.트랄릿

4. 3단계로 포지션을 마감 합니다. 예:

로트는 1입니다.

1 출구 - 로트의 50%가 마감되었습니다(예: 시가에서 30포인트).

2 출구 - 로트의 30%가 마감되었습니다(예: 시가에서 70포인트).

3 출구 - 예를 들어 MA 교차로에서 부지의 20%가 폐쇄되었습니다.

감사하다.

 

안녕하세요! 이 간단한 Expert Advisor에서 NumberOfBarOpenLastPos 기능을 구현하는 방법을 알려주십시오.

하나의 막대에 대해 순서가 한 번 작동하도록... 코드에 함수를 넣었지만 아무 일도 일어나지 않습니다...

//------------------------------------------------ --------------------
// Tradingexpert.mq4
//
//------------------------------------------------ --------------------
#property copyright "Copyright © Book, 2007"
#속성 링크 "http://AutoGraf.dp.ua"
//------------------------------------------------ --------------- 하나 --
// M15의 숫자 값
외부 이중 손절매 = 200; // 열린 주문에 대한 SL
extern double 이익실현 = 10; // 열린 주문에 대한 TR
extern int Period_MA_1=11; // MA 기간 1
extern int Period_MA_2=31; // MA 기간 2
외부 이중 Rastvor = 28.0; // MA 사이의 거리
외부 이중 로트=0.1; // 하드 코딩된 숫자 제비
extern 이중 Prots = 0.07; // 무료 자기자본 비율

bool 작업=true; // 전문가 고문이 작동합니다.
문자열 기호; // 금융의 이름. 도구
//------------------------------------------------ --------------- 2 --
정수 시작()
{
정수
Total, // 창의 주문 수
Tip=-1, // 유형이 선택되었습니다. 주문(B=0,S=1)
티켓; // 주문 번호
더블
MA_1_t, // 값. MA_1 현재
MA_2_t, // 값. MA_2 현재
로트, // 수량 선택한 순서대로 로트
Lts, // 수량 많은 오픈 주문
Min_Lot, // 최소 랏 수
단계, // 로트 크기 변경 단계
무료, // 현재 무료 자금
One_Lot, // 한 로트의 비용
Price, // 선택한 주문의 가격
SL, // 선택한 주문의 SL
TP; // 선택한 주문의 TP
부울
Ans =false, // 종료 후 서버 응답
Cls_B=false, // Buy 마감 기준
Cls_S=false, // Sell 마감 기준
Opn_B=false, // 매수 개시 기준
Opn_S=거짓; // Sell 열기 기준
//------------------------------------------------ --------------- 삼 --
// 전처리
if(Bars < Period_MA_2) // 막대가 충분하지 않음
{
Alert("창에 막대가 부족합니다. Expert Advisor가 작동하지 않습니다.");
반품; // start()에서 종료
}
if(Work==false) // 치명적인 오류
{
Alert("심각한 오류입니다. Expert Advisor가 작동하지 않습니다.");
반품; // start()에서 종료
}
//------------------------------------------------ --------------- 4 --
// 주문에 대한 회계
기호=기호(); // fin.instr의 이름.
총=0; // 주문 수
for(int i=1; i<=OrdersTotal(); i++) // 순서를 통해 루프
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // 다음이 있는 경우
{ // 주문 분석:
if (OrderSymbol()!=Symb) 계속; // 핀란드어가 아닙니다. 도구
if (OrderType()>1) // 보류 중입니다.
{
Alert("대기 중인 주문이 감지되었습니다. Expert Advisor가 작동하지 않습니다.");
반품; // start()에서 종료
}
총++; // 시장 카운터 큰 떼거리
if (Total>1) // 하나 이상의 주문
{
Alert("여러 개의 시장 주문입니다. Expert Advisor가 작동하지 않습니다.");
반품; // start()에서 종료
}
티켓=OrderTicket(); // 선택된 번호. 주문.
Tip=주문유형(); // 선택한 주문의 유형입니다.
가격 = OrderOpenPrice(); // 가격이 선택되었습니다. 주문.
SL = 주문 중지 손실(); // 선택한 주문의 SL.
TP=OrderTakeProfit(); // 선택된 주문의 TP.
Lot=OrderLots(); // 랏 수
}
}
//------------------------------------------------ --------------- 5 --
// 거래 기준
MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_1
MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TYPICAL,0); // MA_2

if (MA_1_t > MA_2_t + Rastvor*Point) // If 차이
{ // ..MA 1 및 2 큰
Opn_B=참; // 기준을 엽니다. 구입
CLs_S=참; // 기준을 닫습니다. 팔다
}
if (MA_1_t < MA_2_t - Rastvor*Point) // If 차이
{ // ..MA 1 및 2 큰
Opn_S=참; // 기준을 엽니다. 팔다
Cls_B=참; // 기준을 닫습니다. 구입
}
//------------------------------------------------ --------------- 6 --
// 마감 주문
while(true) // 주문 마감 주기.
{
if (Tip==0 && Cls_B==true) // 매수 주문이 열렸습니다..
{ //종료 기준이 있습니다.
Alert("구매를 종료하려고 합니다. ",티켓,". 응답을 기다리는 중입니다..");
새로 고침(); // 데이터 업데이트
Ans=OrderClose(티켓, 로트, 입찰, 2); // 닫기 구매
if (Ans==true) // 알았습니다 :)
{
Alert("구매 주문 마감됨",티켓);
부서지다; // 닫기 루프에서 종료
}
if (Fun_Error(GetLastError())==1) // 오류 처리
계속하다; // 재시도
반품; // start()에서 종료
}

if (Tip==1 && Cls_S==true) // 매도 주문이 열렸습니다..
{ // 닫는 기준이 있습니다.
Alert("판매 종료 시도 ",티켓,". 응답을 기다리는 중입니다..");
새로 고침(); // 데이터 업데이트
Ans=OrderClose(티켓,로트,매도,2); // 닫기 판매
if (Ans==true) // 알았습니다 :)
{
Alert("판매 주문 마감됨",티켓);
부서지다; // 닫기 루프에서 종료
}
if (Fun_Error(GetLastError())==1) // 오류 처리
계속하다; // 재시도
반품; // start()에서 종료
}
부서지다; // 종료하는 동안
}
//------------------------------------------------ --------------- 7 --
// 주문 비용
새로 고침(); // 데이터 업데이트
Min_Lot=시장정보(Symb,MODE_MINLOT); // 최소 수량 제비
무료=AccountFreeMargin(); // 사용 가능한 자금
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// 1랏의 비용
단계 = MarketInfo(Symb,MODE_LOTSTEP); // 단계 크기 조정

if (Lots > 0) // 로트가 지정된 경우
lts=많음; // 우리는 그들과 함께 일한다
else // % 자유 자본
Lts=MathFloor(무료*Prots/One_Lot/Step)*Step;// 열려면

if(Lts < Min_Lot) Lts=Min_Lot; // 최소값보다 작지 않음
if (Lts*One_Lot > Free) // Lot는 무료보다 비쌉니다.
{
Alert(" ", Lts," lot에 대한 자금이 충분하지 않습니다.");
반품; // start()에서 종료
}
//------------------------------------------------ --------------- 여덟 --
// 오픈 오더
if (NumberOfBarOpenLastPos()>0){
while(true) // 주문 마감 주기.
{
if (Total==0 && Opn_B==true) // 주문을 엽니다. 아니 +
{ // 열린 기준 구입
새로 고침(); // 데이터 업데이트
SL=Bid - New_Stop(StopLoss)*포인트; // SL 열기를 계산합니다.
TP=Bid + New_Stop(TakeProfit)*포인트; // TP 오픈을 계산합니다.
Alert("구매를 열려고 합니다. 응답을 기다리는 중입니다..");
티켓=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//오픈 구매
if (티켓 > 0) // 성공 :)
{
Alert("구매 주문 오픈",티켓);
반품; // start()에서 종료
}
if (Fun_Error(GetLastError())==1) // 오류 처리
계속하다; // 재시도
반품; // start()에서 종료
}
if (Total==0 && Opn_S==true) // 주문을 엽니다. 아니 +
{ // 열린 기준 팔다
새로 고침(); // 데이터 업데이트
SL=Ask + New_Stop(StopLoss)*포인트; // SL 열기를 계산합니다.
TP=Ask - New_Stop(TakeProfit)*포인트; // TP 오픈을 계산합니다.
Alert("판매를 열려고 합니다. 응답을 기다리는 중입니다..");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Open Sel
if (티켓 > 0) // 성공 :)
{
Alert("판매 주문 오픈",티켓);
반품; // start()에서 종료
}
if (Fun_Error(GetLastError())==1) // 오류 처리
계속하다; // 재시도
반품; // start()에서 종료
}
부서지다; // 종료하는 동안
}
}
//------------------------------------------------ --------------- 아홉 --
반품; // start()에서 종료
}
//------------------------------------------------ -------------- 십 --


//+----------------------------------------------- ------------------------------+
//| 저자 : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------- ------------------------------+
//| 버전: 2008년 2월 19일 |
//| 설명 : 마지막 위치의 열린 바 번호 또는 -1을 반환합니다. |
//+----------------------------------------------- ------------------------------+
//| 옵션: |
//| sy - 기기 이름("" 또는 NULL - 현재 기호) |
//| tf - 기간( 0 - 현재 기간) |
//| 연산 - 연산(-1 - 임의의 위치) |
//| mn - MagicNumber( -1 - 모든 마법) |
//+----------------------------------------------- ------------------------------+
정수 NumberOfBarOpenLastPos(문자열 sy="0", 정수 tf=0, 정수 연산=-1, 정수 mn=-1) {
날짜 시간 t;
정수 i, k=OrdersTotal();

if (sy=="" || sy=="0") sy=Symbol();
(i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sy, tf, t, True));
}

int Fun_Error(int Error) // 오류 처리 함수
{
스위치(오류)
{ // 피할 수 있는 오류
case 4: Alert("거래 서버가 바쁘다. 다시 시도해보자..");
수면(3000); // 간단한 솔루션
반환(1); // 함수 종료
case 135:Alert("가격이 변경되었습니다. 다시 시도해보세요..");
새로 고침(); // 데이터 업데이트
반환(1); // 함수 종료
case 136:Alert("가격이 없습니다. 새 틱을 기다리는 중입니다..");
while(RefreshRates()==false) // 다음 틱까지
수면(1); // 루프에서 지연
반환(1); // 함수 종료
case 137:Alert("브로커가 사용 중입니다. 다시 시도합니다..");
수면(3000); // 간단한 솔루션
반환(1); // 함수 종료
case 146:Alert("거래 하위 시스템이 사용 중입니다. 다시 시도하십시오..");
수면(500); // 간단한 솔루션
반환(1); // 함수 종료
// 치명적인 오류
사례 2: Alert("일반 오류입니다.");
리턴(0); // 함수 종료
사례 5: Alert("이전 터미널 버전입니다.");
작업=거짓; // 더 이상 작동하지 않음
리턴(0); // 함수 종료
case 64: Alert("계정이 차단되었습니다.");
작업=거짓; // 더 이상 작동하지 않음
리턴(0); // 함수 종료
case 133:Alert("거래가 금지됩니다.");
리턴(0); // 함수 종료
case 134:Alert("작업을 완료하기에 자금이 충분하지 않습니다.");
리턴(0); // 함수 종료
기본값: Alert("오류가 발생했습니다. ",Error); // 다른 옵션
리턴(0); // 함수 종료
}
}
//------------------------------------------------ -------------- 열하나 --
int New_Stop(int Parameter) // 중지 prik를 확인합니다.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// 최소. 거리
if (Parameter<Min_Dist) // 허용보다 작으면
{
매개변수=Min_Dist; // 허용으로 설정합니다.
Alert("스탑 오더 거리가 증가했습니다.");
}
반환(매개변수); // 반환 값
}
//------------------------------------------------ -------------- 12 --

 
kurilko >> :

// 오픈 오더

if (NumberOfBarOpenLastPos()>0)

이 함수는 포즈가 열린 경우에만 0보다 큰 값을 반환하고 그렇지 않은 경우 -1 다음에...

if (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)

{

}

 

조건을 if (NumberOfBarOpenLastPos()>0||NumberOfBarOpenLastPos()==-1)로 변경했습니다.

여전히 작동하지 않습니다. 코드의 다른 위치에 등록해야 합니까?