Announcement

Collapse

Looking for a User App or Add-On built by the NinjaTrader community?

Visit NinjaTrader EcoSystem and our free User App Share!

Have a question for the NinjaScript developer community? Open a new thread in our NinjaScript File Sharing Discussion Forum!
See more
See less

Partner 728x90

Collapse

converting eSignal (javascript) to NinjaScript

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    converting eSignal (javascript) to NinjaScript

    In anticipation of NT6 chart trading being available in the next few weeks, I am converting my efs strategies over to NinjaScript.

    I strikes me that I am not the only one that will be doing this (from somenon-C# code)and that perhaps asking some very basic questions in this thread will save me and others many hours of searching for answers which are blatantly obvious to current NinjaScript users/experts.

    While javascript and ninjascript are bascially very similar, there are some simple differences which are annoying/time-consuming to research. For instance, some common efs code:

    Question 1:Printing a variable on a chart.

    efs code: drawText(Close(0), AboveBar2); prints the last closing price two ticksizes above the current bar....drawText("Sell"....prints the string "Sell"....

    nt code: DrawText("tag", Close[0], 0, High[0]+2*TickSize, Color.Yellow); results in errors including "can not convert from double to string"

    Question 2: Checking current bar state.

    efs code: prior to conditional.... nState = getBarState();....later in code if(nState == BARSTATE_NEWBAR).....is truefor first tick of new bar

    nt code: temporary solution thanks to Ray:



    [align=left]We have logic in an NT6 Strategy bool FirsTickOfBar, there is nothing in NT5.[/align]


    [align=left][/align]


    [align=left]What you could do, is calculate yourself.[/align]


    [align=left][/align]


    [align=left]For TickChart use the Bars.TickCount property[/align]


    [align=left][/align]


    [align=left]private bool firstTick = true;[/align]


    [align=left]private int lastCount = 0;[/align]


    [align=left][/align]


    [align=left]if (Bars.TickCount< lastCount)[/align]


    [align=left] firstTick = true;[/align]


    [align=left][/align]


    [align=left]lastCount = Bars.TickCount;[/align]


    [align=left][/align]


    [align=left]for time chart use[/align]


    [align=left][/align]


    [align=left]private bool firstTick = false;[/align]


    [align=left]private DateTime currentTime = DateTime.MinValue;[/align]


    [align=left][/align]


    [align=left][/align]


    [align=left]if (Time[0].Minute > currentTime.Minute)[/align]


    [align=left]{[/align]


    [align=left] firstTick = true;[/align]


    [align=left] currentTime = Time[0];[/align]


    [align=left]}[/align]


    [align=left]else[/align]


    [align=left] firstTick = false;[/align]


    [align=left][/align]


    [align=left][/align]


    [align=left]Hope this helps![/align]


    [align=left]
    Ray
    [/align]

    #2
    imported post

    ATI user wrote:
    Question 1:Printing a variable on a chart.

    efs code: drawText(Close(0), AboveBar2); prints the last closing price two ticksizes above the current bar....drawText("Sell"....prints the string "Sell"....

    nt code: DrawText("tag", Close[0], 0, High[0]+2*TickSize, Color.Yellow); results in errors including "can not convert from double to string"

    NinjaScript (C#) is a type safe language meaning, unlike some languages, type conversion is not handled for you. Therefore, when passing in parameters, you must ensure that they are of the correct type. The DrawText() method signature is:

    DrawText(string tag, string text, int barsAgo, double y, Color color)

    For the parameter "text" you passed in Close[0] which is a double value when it is looking for a text value. All C# objects have an object.ToString() method. Therefore, you can do the following to convert the Close[0] to a string value.

    DrawText("myTag", Close[0].ToString(), 0, High[0] + 2 * TickSize, Color.Yellow)

    Ray
    RayNinjaTrader Customer Service

    Comment


      #3
      imported post

      Thanks Ray.

      ToString works great.

      So does Bars.TickCount. I hope NT6 will have Bars.VolCount for volume bars?


      Comment

      Latest Posts

      Collapse

      Topics Statistics Last Post
      Started by techgetgame, Today, 11:42 PM
      0 responses
      7 views
      0 likes
      Last Post techgetgame  
      Started by sephichapdson, Today, 11:36 PM
      0 responses
      1 view
      0 likes
      Last Post sephichapdson  
      Started by bortz, 11-06-2023, 08:04 AM
      47 responses
      1,613 views
      0 likes
      Last Post aligator  
      Started by jaybedreamin, Today, 05:56 PM
      0 responses
      9 views
      0 likes
      Last Post jaybedreamin  
      Started by DJ888, 04-16-2024, 06:09 PM
      6 responses
      19 views
      0 likes
      Last Post DJ888
      by DJ888
       
      Working...
      X