Open Forex4you Account

Server รัน EA 1000 / ปี

สั่งชื้อคู่มือการโปรแรกม MQL4

Author Topic: ขอสอบถามหน่อยครับ  (Read 15683 times)

TvT

  • Full Member
  • ***
  • Posts: 133
ขอสอบถามหน่อยครับ
« on: สิงหาคม 28, 2010, 08:49:01 pm »
ถ้าเกิดผมใช้ค่า indicator สมมุติ  RSI สองเวลาแล้วต้องการบันทึกค่่าที่สองเส้นนี้ตัดกันจะสามารถให้มันบันทึกหรือแสดงค่าได้มั๊ย
จะเอามาเปรียบเทียบกันน่ะ เป็นจุดเข้าออกประมานนี้ ต้องการจำประมาน3ค่า

และ indicator  EA SHI ใช้ code ใด เรียกค่าแท่งบน - ล่าง ของ SHI แท่งที่ [shift 1 -100] ครับ

« Last Edit: สิงหาคม 28, 2010, 09:24:06 pm by TvT »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ขอสอบถามหน่อยครับ
« Reply #1 on: สิงหาคม 29, 2010, 01:49:30 am »
ได้ครับ ก็เขียนโค๊ดที่อ่านค่าทั้งสองคาบเวลามา   เมื่อค่าเท่ากัน แสดงว่าตัดกัน
ส่วนจะจำกี่ค่าก็ได้ เรื่องของท่าน ก็สร้างตัวแปรมาเก็บค่าไว้เท่านั้นเอง
หรือถ้ากลัวว่า เน็ตหลุดแล้วไม่จำค่า ท่านก็เอาค่านั้นไปเขียนลงไฟล์ไว้ แล้วก็อ่านค่ามาใช้งานได้ครับ

TvT

  • Full Member
  • ***
  • Posts: 133
Re: ขอสอบถามหน่อยครับ
« Reply #2 on: สิงหาคม 29, 2010, 10:02:07 am »
ไม่แน่ใจว่าเข้าใจถูกต้องรึปล่าว ถ้าตามนี้เลยค่าที่ได้ คือ 2-0 รึปล่าวแล้วนับเฉพาะเวลาตัดขึ้น?
2 คือค่าเก่าสุด 0 คือค่าที่เพิ่งเกิดแล้วเลื่อนอย่างงี้ไปเรื่อยๆ
ไม่ทราบว่าเข้าใจถูกต้องรึปล่าวรบกวนช่วยอธิบายทีนะครับ
       int amount=0;
       double temp[4];
       double main,P_main;
       double signal,P_signal;
       double cut;
                       for(int i=0 ;i<5000;i++)
                           {
                               main=iMA(NULL,PERIOD_M15,40,0,MODE_EMA,PRICE_CLOSE,i);
                               signal=iMA(NULL,PERIOD_M15,40,0,MODE_EMA,PRICE_CLOSE,i);                              
                               P_main=iMA(NULL,PERIOD_M15,80,0,MODE_EMA,PRICE_CLOSE,i+1);
                               P_signal=iMA(NULL,PERIOD_M15,80,0,MODE_EMA,PRICE_CLOSE,i+1);
                               if((main==signal)&&(P_main<P_signal))
                               {
                                  temp[amount]=main;
                                  amount++;
                                  if(amount>2)
                                  {
                                   i=5001;
                                  }
                               }                    
                            }

                          if((temp[2]<temp[1])<(temp[1]<temp[0]))
                          direct=1
« Last Edit: สิงหาคม 29, 2010, 01:29:25 pm by TvT »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ขอสอบถามหน่อยครับ
« Reply #3 on: สิงหาคม 29, 2010, 11:33:43 pm »
ไม่ใช่ครับ
ค่าที่อยู่ใน loop ต้องเป็น array ไม่งั้นมันจะได้ค่าสุดท้ายของ loop คือ i=5000
ต้องเป็น main[]  // อันนี้ไม่เกี่ยวกับที่ผมบอกไปน๊ะ

แล้วที่ผมบอกคือ คุณต้องการเก็บค่าการตัดกันของ indy   xxx  ที่สอง timeframe สมมุติ  5 กับ 15

สร้างตัวแปร   a b c   
เก็บค่าตามลำดับ

ทีนี้ก็อ่าน ค่าอินดี้ xxx มาทั้ง    5   &   15
เมื่อค่าเท่ากัน หรือ (แล้วแต่เทคนิคการคิดว่ายังไงถึงจะตัดกัน) ก็บันทึกที่ a
ไปเรื่อยๆอีก เท่ากันอีกแล้วก็บันทึกที่ a แต่ก่อนบันทึกที่ a  ต้องเอาค่าที่ a ไปไว้ที่ b ก่อน
ก็จะได้ตัดกันล่าสุดที่ a แล้วก่อนหน้านั้นที่ b

ปล่อยไปเรื่อยๆ อีกเท่ากันอีกแล้ว
ก็ไปบันทึกที่ a อีก แต่เดี๋ยวเอา a ไปบันทึกไว้ิ b ก่อนค่าเก่าจะได้ไม่หาย เฮ้ย ไม่ได้ต้อง เอา b ไปบันทึกไว้ที่ c ก่อนแล้วค่อยย้าย a ไปไว้ที่ b แล้วค่อยเก็บค่าใหม่ไว้ที่ a
เฮ้อ ครบแล้ว ก็จะได้ค่าที่ตัดกัน 3 ค่าแล้วพร้อมมเอาไปเปิดออร์เดอร์แล้ว

เข้าใจป่าวเนี่ย


TvT

  • Full Member
  • ***
  • Posts: 133
Re: ขอสอบถามหน่อยครับ
« Reply #4 on: สิงหาคม 30, 2010, 11:24:17 am »
ขอบคุนที่แนะนำครับ
แต่สงสัยตอนเลื่อนค่าที่บันทึกจาก a ไป b bไป c
รบกวนแนะนำอีกครั้งเรื่องคำสั่ง วิธีการเขียนหน่อยนะครับ
สุดท้ายแล้ววิธีนี้ปรับใช้กับcustomindicatorอื่นได้มั๊ย

แล้ว SHI channel ที่ให้ สามารถดึงค่าได้มั้ยครับ (SHI upper & lower band ที่ตำแหน่ง X ต้องใช้คำสั่งอะไรครับ) พอดีดูแล้วเหมือนมันไม่ส่งค่าออกมา เลยไม่แน่ใจว่าจะใช้อะไรเทียบครับ
« Last Edit: สิงหาคม 30, 2010, 01:36:12 pm by TvT »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ขอสอบถามหน่อยครับ
« Reply #5 on: สิงหาคม 30, 2010, 06:14:19 pm »
double a,b,c;
if( เส้นแรก == เส้นสอง หรือ คอนดิชั่นที่คิดว่ามันตัดกันหรืออะไรก็ได้ที่เป็น event ของคุณ)
   {
       c=b;
       b=a;
       a=ค่าที่อยากบันทึก อะไรก็ว่ากันไป ;
    }

ใช้ได้กับอะไรก็ได้ที่ส่งค่าออกมา ไม่ได้ส่งค่า null ออกมา

แล้วก็ในบอร์ดนี้มีโปรแกรมที่ท่าน admin เขียนไว้เพื่ออ่านค่าที่ออกมา จาก icustom ลองไปหาดูครับ มันอธิบายยากกกกกกกกกส์

Jummum

  • Newbie
  • *
  • Posts: 29
Re: ขอสอบถามหน่อยครับ
« Reply #6 on: สิงหาคม 30, 2010, 11:06:09 pm »
ผมพยายามเขียนอะไรประมานนี้เหมือนกันเลย
แนวคิดนะ อ่านค่า Sto สองเส้นตัดกัน
ถ้ามันตัดกัน a b c มีค่าตามกระทู้ข้างบนนะ
แล้ว b<c ส่วนมากมันจะลงอยู่
ต่อมา a>b ก็เหมือนการกลับทางน่ะ ไม่ถูกทุกครั้งนะแต่ก็ตั้งstoplossเอา
แต่เขียนออกมาแล้วไม่ซื้อไม่ขายเลย
ช่วยบอกทีว่าผิดยังไงจะอาไว้ปรับปรุงต่อไป Please!!
« Last Edit: สิงหาคม 31, 2010, 03:45:00 pm by Jummum »

linconz

  • VIP
  • Sr. Member
  • *
  • Posts: 357
Re: ขอสอบถามหน่อยครับ
« Reply #7 on: สิงหาคม 31, 2010, 01:56:43 pm »
if((P_main>P_signal)&&(main==signal))

ลองดู logic ตรงนี้ใหม่ครับ

p_main  หมายถึง previous หรือป่าว   ถ้าใช่อยากจะให้เปลี่ยน การกำหนดชื่อตัวแปรใหม่  การกำหนดแบบนี้ก็ใช้ได้ครับ แต่ถ้าต้องการค่าย้อนหลัง 10 ค่าจะตั้งชื่อว่าอะไร

อยากให้ใช้ แบบที่สื่อความหมายได้เลย  เช่น sto555_m0_0 หรือจะเป็น sto555m0s0 (m0 คือ mode 0 ถ้าต้องการ signal ก็ mode 1  7  8  9 อะำไรก็ว่ากันไป)
( s0 คือ shift 0 ค่าปัจจุบัน)
หรือถ้าอยากย้อนไป 1 ค่าก็จะได้ sto555_m0_1

เวลาให้คนอื่นดูเข้าใจง่ายและช่วยกันแก้ไขได้รวดเร็ว  (เป็นคำแนะนำเฉยๆครับ อยากเก่งต้องฝึกไว้ ถ้าตั้งชื่อแบบนี้ เวลาเขียนโปรแกรมยาวๆ ตัวแปรเยอะๆ งงเลย ขอบอก  อิอิ)